CDAP-693 Adding the ability to run hive queries on streams.

This includes various changes to make this possible.

Streams are now created when an application is deployed
instead of lazily created when the first event is written to it.
If explore is enabled when a stream is created, an external
hive table is created using a custom HiveStorageHandler for
streams. This required some refactoring around the stream input
format, as our mapreduce code uses the newer mapreduce apis, but
the hive code uses the old mapred apis.
This also implies that when a truncation happens, we need to update the Hive table. When truncation happens, there is a generation changed event being fired, you can base on that signal to update Hive table. You would like to have the leader StreamHandler to perform that only, also need to check if needs to update when it become leader and first subscribe to the change event.