This commit makes an abstract base class for broadcast areas, so that methods and properties which are common between `BroadcastArea`s (those which come from our library) and `CustomBroadcastArea`s (those supplied via the API) can be shared.