A new module called kite-minicluster, which is a standalone minicluster ...

...that can be configured

with Services (like Cloudera Manager) that are run as part of the minicluster. Supported
Services in this commit are HDFS, HBase, and Zookeeper.

This minicluster implementation can be embedded in an application, integration tests,
or run standalone from the command line.

The minicluster supports forcing all listening sockets from minicluster services to force bind
to a specific IP address, making this minicluster compatible with environments like OpenShift
where the user is restricted on which IPs they are able to bind to.

It also supports toggling whether it starts fresh by cleaning the data directory of a previous
run, or keeps the data directory in tact so data can be kept across runs.
This should call `Thread.currentThread().interrupt()` or propagate the `InterruptedException` so calling code knows that there's been an interrupt. I also don't think that wrapping the exception in an `IOException` is appropriate, we should probably create a `RuntimeException` class for this.