Committing the initial files in a rewrite of Eventstreamr's controller and station using Python and Twisted instead of Perl.

The two files are the entry points for the manager(controller) and the station.

Currently they are setup for simple testing rather than any actual code.
Implemented custom AMP arguments.

They provide support for sending long strings(more than 65,000 chars), python objects. They also support filling in the transport information.
This provides a slightly less hacky way of accessing the information needed to call a method on the station from the manager.
The roles.__init__ file provides helper classes for registering and configuring AMP Commands.

1. Create a configuration helper by calling `configuration_helper` with a name to prefix/group the commands together. This should be unique however doesn't have to be as each instance is independent even if they are created with the same name.
2. Now register each command by annotating the command class. This will modify the command's name to include the prefix. This will allow for multiple commands of the same class name as long as they are in different groups.
3. The commands can now optionally have callbacks attached; however they do not need to.
4. Calling `register` on the object returned from step 1 will allow any instance of `ConfiguredCommandLocator`, `ConfiguredCommandAMP` or it's subclasses to now locate these commands.
5. The helper can then be deregistered to stop the commands being located and run. Combining steps 4 and 5 allows the helper to be toggled on and off as it is needed.

Note that steps 3 and 4 are not required if the currently running instance is not recieving any commands in the group.

For example - registering a new station with a manager:
 - The `RegistrationCommand` class is annotated which means that the name is configured correctly wherever the file is loaded.
 - Then on the manager, a callback is registered to respond to that command and the helper's `register` method is called allowing the manager to receive those messages.
 - This means the station can send the messages(as the `RegistrationCommand` class is configured correctly); but doesn't need to worry about having an implementation for the command's callback.
Added a commands file to contain the basic commands that are not related to individual roles.

Currently this file only creates a station registration command.
Added file to provide the computer's network information.

Currently returns dummy data because eth0 is not connected on my computer(and `ifdata` was a pain to install on osx)
Added a monitor class and associated file handling.

The monitors are callable objects.
When the monitor is called it runs the no-argument `run_filter` method.
If `run_filter` returns a truthy value then `callback` is called with the arguments given to the monitor's call.
Otherwise no action is taken.
Both routes return no value; even if the `callback` function returns a value.

Currently the two implemented monitors detect if there are files in a given folder, and if there are any files matching a given filter in a given folder.
Added base configuration object to hold the stations networking information and it's role configuration.
Moved command & configuration around. Now the classes to create and configure roles are in `roles.__init__`. The command configuration has been moved `lib.commands` and the general commands have been moved to `lib.general_commands`. As part of the move the `RoleConfig` was removed from `lib.config` and placed in `roles.__init__`.
Added helper method to `lib.manager.__init__` to create a dictionary with the folder names of the processing folders. This is configurable in the script and is designed to be consistant for all queue types.
Added factory registration functions and changed return types.
Removed reference to `String`(replaced with `Unicode`) as an argument type. Removed debugging statements and added a new argument to allow information to be sent to the command's sender.
Implemented encode queue. Currently it just runs echo; but this can be changed.
Fixed JSON(turns out quotes are important).
Simplified `lib.file_helper`.

Made the `list*files*` methods return the full path instead of the name.
Changed JSON helper methods to use `with`.
Added a `read_in` method to read a file in.
Simplified `lib.commands` and `lib.config`.

Removed debugging & changed to using a `set` in `lib.commands`
Changed `roles` to be a property in `lib.config`
Implemented the encoding queue in the root files. On a side note - IT WORKS - kinda.