pylabrad TODOs:

GENERAL:
  when calling user-overridden methods, check whether they are generators and
    print a warning since they probably forgot @inlineCallbacks

  Client/ClientAsync:
    create clones that work in different contexts by default
      done for client, need to implement for clientAsync as well
    implement generic flattened version of a packet that can be forwarded
      to do this, probably need a 'Flattened' data type
      probably just a str subclass with a type tag attribute

  LOGGING:
    make self.log work in a reasonable way before servers have started serving
    allow logs to be accessed and manipulated remotely
    configurable debug/logging verbosity levels (change on the fly)
    syslog/systemd/windows event log integration
  
  MESSAGE HANDLING:
    declarative message handling for servers and clients
      do this with decorators, similar to @setting

SERVERS:
  GENERAL:
    emit log messages and allow setting log levels
    add manhole interface to allow for remote inspection/debugging

  NODE:
    GUI to let the node live in the tray
    server classification, preferred run location, etc.
    configure different ways to execute servers (e.g. Java jars, different python versions, etc.)
    allow the node to look inside java jars for server info
    version-control interface for updating servers on remote nodes (e.g. svn)

  SUPER NODE:
    can the nodes themselves elect a supernode?
    ask for a server to be started
    supernode looks up the location to run the server in the registry

