Optimising Stream Matcher performance and metrics

Adding metrics to stream matching. Incoming messages per second and
execution time of streams are now accounted per stream.
Adding caching to stream rules. Due to this and stream caching itself
the complexity is now O(c) instead of O(n).