Modifications to Spout code to allow for metric registration

Fixes: #445
why isn't this the same as:

```scala
spout.registerMetrics(metrics).getSpout(transform)
```
Why do we need a method that throws away the old metrics? Nervous here.