New beacon manager class

The impetus around this (set of) class(es) was to introduce a better way of subscribing and unsubscribing triggering start and stopping of expensive operations. Additionally, better multicasting of the expensive signals, so that multiple subscriptions can share the state of the location manager. Moving the signals over to the beacon regions as well gives us a more explicit contract with how those operations will affect that specified region, leaving other regions' operations in tact.

:shipit: