Schedule background job to update router engine periodically.
Add getStreams method to stream engine.
Use factory to create engine and add time limiter.
Move stream metrics into a separate class.
Move stream fault handling into StreamFaultManager.
Fix thread name and javadoc reference.
Add matchRulesWithTimeout() method to stream router engine.
Restore previous behaviour and only register failure for a stream once.

Before this, registerFailure could have been called for a stream more
than once if the stream has multiple rules.