Bounded memory of the ScaleoutMappingStore.
- Wrote a new version of the MessageStore that implements
  lookup using a binary search instead of a direct lookup.
- Added unit tests for the ScaleoutStore.
Reuse more code from MessageStore in ScaleoutStore.
- Simplified logic in ScaleoutSubscription by pushing fallback logic into
  the ScaleoutStore.
Expand on how the ScaleoutMapping enumerator works.
- Handle walking across fragment boundaries by using the internal
  message ids.
Fixed edge cases by using the base MessageStore logic for lookup.
- Calculate the requested internal message store id based on the binary
 search then call into the normal lookup logic.
Create a new store when the ids aren't increasing.
- Made the store reference in the enumerator a weak reference.