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). 
Well, if we constrain the lookup to use the BatchID then we would be limiting the error on the value to be up to that BatchID since we don't have the actual timestamp in the store? So it's more correct but still not exactly correct. Unless we use very small batches (which we normally don't and they probably wouldn't make sense anyway). Also this change will require some significant changes in the [online left join](https://github.com/twitter/summingbird/blob/7e847d86a92070c8e3f535b4f37b06002ea261a1/summingbird-online/src/main/scala/com/twitter/summingbird/online/FlatMapOperation.scala#L114) since right now we don't have access to the Batcher there but we would need to in order to cast the timestamp to the BatchID. Do you think this is a common enough usecase for us to change this behavior?