Support for creating a store-service for Storm platform

To be able to do leftJoin on a store we need the same object to serve as a store and a service. This is already [supported in the Scalding Platform](https://github.com/twitter/summingbird/blob/1b630690a8efe554ab3fabc9b60965c2c95e2e83/summingbird-scalding/src/main/scala/com/twitter/summingbird/scalding/Service.scala#L46). This adds a trait to the Storm Platform that is of both P#Store and P#Service types. This can be used in jobs that use leftJoin against store. Users in their jobs can call:

```
Storm.storeService(mergeableStore, serviceStore)(batcher)
```
where the mergeableStore is the store for aggregation (delta store) and serviceStore is the store that we use as a service (can be delta store or the total store). For read-modify-write behavior the serviceStore should include the delta store, i.e. serviceStore can be a client store that wraps the delta mergeableStore or a client store that wraps the delta mergeableStore and the offline store (i.e. the total store). 
Right now, I have it setup with ClientStore like so:
```
val mergeableStore: MergeableStore[(Long, BatchID), Long] = Memcache.getMemcacheStore[(Long, BatchID), Long](Config.online)
val clientStore: ClientStore[Long, Long] = ClientStore(mergeableStore, Config.batchesToKeep)(Config.batcher, Config.monoid)
val storeService: CombinedServiceStoreFactory[Long, Long] = Storm.storeService(mergeableStore, clientStore)(Config.batcher)
```
In this example we only use the online store, but the user can pass an offline store to it too. This is not great since the two stores (mStore and sStore) can be different (unless we somehow check that ClientStore wraps the same mergeable store), so we would have to be explicit about that. 

ClientMergeable extends Mergeable[(K, BatchID), V] and ReadableStore[(K, BatchID), V] right? So we still would need to handle the BatchID somehow in the leftjoin