Initial motion toward versioned app defs. AppDefinition is now a (mutable) case class.  Added basic AppDefinition (de)serialization test.
Modified MarathonState to take two type parameters instead of one [protobuf, model]. Fixed use sites of MarathonState.mergeFromProto, incl tests.
Refactored the shape of AppDefinition.tasks
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.
AppDefinition is now (mostly) immutable.  App tasks are modeled as a mutable snapshot for JSON serialization purposes.  Regenerated REST doc.
Fixes type error in v1.AppsResource
Improved method of augmenting the AppDefinition model with task information.
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.
Cleaned up AppDefinition subtype constructors.  Made constraint (de)serializers singletons.
Minor cleanup in AppDefinition (redundant import, scoping)
Modified semantics of task list in AppDefinition subclasses (now snapshots)
change the signature of modify so that user can avoid unnecessary deserialization overhead.
Update ZK urls in README for HA mode
added api documents.
Merge pull request #160 from gphat/master

Update ZK urls in README for HA mode

Thanks @gphat