Merge pull request #3 from emonhub/testing

update from upstream
Merge pull request #4 from emonhub/testing

Option of pre-timestamped data
Added interfacer queues

Each intefacer has a "publishing" queue so that the main loop could just
watch the queue and the interfacers could be run in their own threads.
Added interfacer multi-threading

Each interfacer runs in it's own thread, "conversion" requires
improvements
Added thread alive tests

If thread fails the main thread would not know, added this as a warning
and if it get use then better handling or fault checking can be
implemented.
Modification to rfm2pi send time

Changed the way the JeeInterfacer creates and sends the time packet so
that a universal "send packet" can be used with other packets to be sent
out over rf network.
frames added to queue in read()

Changed how frames are added to queue to cater for adding multiple
frames.
Added a second queue to interfacers

Renamed the first queues to "rxq" this is each interfacers queue for
data received to be handled by the main loop and added a second queue
called txq to each interfacer so that data packets can be queued for the
interfacers to "handle" (send out to devices usually)
Thread alive put on hold

Needs more work to be able to restart thread, just use to report dead
thread for the moment.
Initial "Experimental" rc2.0?

Lots of stuff to try and implement thrown into one pot. not to be
merged. any adopted changes can be progressively moved over with commit
notes one feature set at a time. changes include
interfacer threading
targeted routing of data
bi-directional interfacers
processes input and output data
data value scaling
wan accessible sockets using apikey
packetgen listener
rfm2pilistenerrepeater equivalent feature
specific node targeted rfm transmissions
ability to use multiple jee devices
serial interfacer can use ftdi
node ids beyond 32 can be used with jee network
thread name included in log messages
common packet id/counter across all interfacers
able to break real values down to byte values by datacodes string
internally emonhub uses "cargo" object to hold data packets
input "pre-timestamped" data
This is very much work in progress at this point and is known to have
flaws eg the pause mechanisms. There are also many uncaught exceptions
that have yet to be encountered and handled. The conf file is more of a
check list come manual at this time and appears cluttered and bloated.
There also needs to be more comments in the code. etc etc
Merge pull request #130 from otherWIP/experimental

Experimental