Better memoization of instances and layers.

Old code would stash the instances based on the layer. Which meant the following was possible, even if the layers didn't share any instances in common:

```ruby
stack = Omc::Stack.new
instances = stack.instances(layer_id: 'first-layer')

other_instances = stack.instances(layer_id: 'other-layer')

instances == other_instances
```
Ugh :cry: