Added v2/event_subscriptions endpoints.
Supported methods:
  POST with ?callback_url
  DELETE with ?callback_url

Now, we cannot return any value on subscription endpoints  Because Guava's event bus is totally one-way, which means Guava's event bus  can't return values.  To provide event_subscriptions endpoint, we probably would have to re-think architecture about this so that it doesn't use Guava's event bus.
cleaned up internal codes in HttpEventActor.
/v2/event_subscriptions now has returns result to client. and support GET method on this path to get the list of subscribers.

eliminated a dependency between EventSubscriptionsResource and event bus and Introduced HttpCallbackSubscriptionService instead of it.
add EventSubscribers to marathon.proto for sharing them with marathon instances
make prefix be customizable in MarathonStore
introduce modify(key)(S=>S) in MarathonStore.
Now, store is implemented in PersistenceStore as modify(key)(_=>newValue) .
Introduced SubscribersKeeperActor for accessing subscribers list stored in Zookeeper's state.  And, HttpEventActor now depends on SubscribersKeeperActor.
Optional injection on EventSubscriptionsResource for realizing conditional injection.

Api resources must be always published because http requests to marathon instance will be forwarded to the leader even when --event_subscriber was NOT specified at startup.

However, EventSubscriptionResource depends on HttpCallbackSubscriptionService. And,  dependencies of HttpCallbackSubscriptionService are initialized only when --event_subscriber http_callback is specified at startup. Therefore,  if the normal @Inject annotation was used,  Guice raises an initialization exception during instantiating HttpCallbackSubscriptionService. Optional injection can avoid this.
change the signature of modify so that user can avoid unnecessary deserialization overhead.
added api documents.
Added v2/event_subscriptions endpoints.
Supported methods:
  POST with ?callback_url
  DELETE with ?callback_url

Now, we cannot return any value on subscription endpoints  Because Guava's event bus is totally one-way, which means Guava's event bus  can't return values.  To provide event_subscriptions endpoint, we probably would have to re-think architecture about this so that it doesn't use Guava's event bus.
cleaned up internal codes in HttpEventActor.
/v2/event_subscriptions now has returns result to client. and support GET method on this path to get the list of subscribers.

eliminated a dependency between EventSubscriptionsResource and event bus and Introduced HttpCallbackSubscriptionService instead of it.
add EventSubscribers to marathon.proto for sharing them with marathon instances
make prefix be customizable in MarathonStore
introduce modify(key)(S=>S) in MarathonStore.
Now, store is implemented in PersistenceStore as modify(key)(_=>newValue) .
Introduced SubscribersKeeperActor for accessing subscribers list stored in Zookeeper's state.  And, HttpEventActor now depends on SubscribersKeeperActor.
Optional injection on EventSubscriptionsResource for realizing conditional injection.

Api resources must be always published because http requests to marathon instance will be forwarded to the leader even when --event_subscriber was NOT specified at startup.

However, EventSubscriptionResource depends on HttpCallbackSubscriptionService. And,  dependencies of HttpCallbackSubscriptionService are initialized only when --event_subscriber http_callback is specified at startup. Therefore,  if the normal @Inject annotation was used,  Guice raises an initialization exception during instantiating HttpCallbackSubscriptionService. Optional injection can avoid this.
change the signature of modify so that user can avoid unnecessary deserialization overhead.
added api documents.
Merge branch 'add-subscription-endpoint' of github.com:mesosphere/marathon into add-subscription-endpoint
- `EventSubscribers` ADT is now an immutable (case class)
- Refactored `SubscribersKeeperActor` a bit for readability.
- Changed message sent by `SubscribersKeeperActor` in response to `GetSubscribers` from a bare `List[String]` to an `EventSubscribers`.
- Modified response JSON format for `GET /v2/event_subscriptions` for consistency.
- Modified key in serialized form of SubscriptionEvents for uniformity (URL vs URI).