Added threading support and other controls

The indra client can now be launched as a non-blocking thread in
parallel with other code. Other code can:
- launch the client with preset parameters (no need to enter username or
port...etc). the prompts are also still there
- start and stop the client
- get the data being generated
- dump the data to a file on demand
- get the status of the client
- use offline mode where random data is generated (need to specify the
raw format)
- Control whether to ship the data to the server or not (default is yes)
- Control whether to print the output to the console or not (in json
format)

TODO:
update the data map for the new raw data