Announce To Master Without An IP

This pull request was written to fix #42.  In this pull request we are:

* No longer using a GET request to determine if the agent exists first
* POSTing directly to the master
* Passing along a new agent field called `systemid` that's generated using the new `get_system_identifier` function. 
* Simplifying the service module
* Simplifying some of the command line options and consolidating the data directory structure

The `get_system_identifier` function will:
* Produce an integer that identifies the system based on an XOR of the MAC addresses associated with the network adapters installed on the system.
* Cache the produced value so it's reused next time the agent is launched.  This should ensure that even if the mac addresses change the `systemid` value should not.  The location of the cache can be overridden with `--systemid-cache`.
* Keep better track of agents even if the hostname/ip changes
* Help to ensure that even if there are duplicate hostnames on the network we can tell two agents apart.  This will also prevent the unique constraint on the table from breaking in the event of duplicate hostnames too.

As I brought up in #42 an agent's persistent uniqueness is needed by the master so that in the event less persistent data, such as the hostname or port, changes we can still associate an agent in the db with a POST request.  Even if the current version of `get_system_identifier` does not give us exactly what we need in terms of calculating uniqueness it should serve as a good entry point for building one.