ServiceManager peering does not respect shared flag 

When pulling a service from a peered ServiceManager it's shared flag is not respected:  If the service is marked as non-shared in the peered service, the SM which is retrieving it will still cache it internally and return that same instance upon multiple calls to `get('servicename')`

This will (obviously) change the behaviour of any code suffering from this bug:  they will now receive a new instance on each get call instead of the same instance each time.  This would likely constitute a BC break, but IMO services are usually marked non-shared for a specific reason and so there is a high probability that any code experiencing this bug is already broken. 
Can you add an assertion for this exception? I can't see how it should be thrown here.