* p2p/jodawg.py: Create config + node.

* p2p/lib/account.py: added user class (perhaps for later use).

* p2p/lib/configuration.py: Function for obtaining bootstrap peers.

* p2p/lib/encryption.py: Add convenience function for json-ifying and encryption.

* p2p/lib/messaging.py: Message service stub.

* p2p/lib/overlay.py: Network overlay definition (working on this).

* p2p/lib/versioning.py: (perhaps) generic versioning.
* IDEAS.md: updated, listed several hard problems.
* IDEAS.md: update (mildly though)

* jodawg.py: creates config, encryption and node objects. starts the actual node in its own
  thread, then the shell in its own thread. When the shell terminates the node does too (for now that makes sense).
  (WINDEL: you can start the GUI in it's own thread, same as done for the Shell object,
   if the user exits the application the thread ends, and the node will terminate).

* network.py: Rewritten to simply have a socket and registerable services. While this may seem
  a bit 'overengineered' right now, it makes writing different services communicating over the same socket
  simpler (though a bit less efficient as it's set up now). We can change that later.
  Node is no it's own thread.

* overlay.py: Simplify the join procedure. A node can join the network regardless of
  whether it has an associated user now. The whole authentication dance is for the user_login command, not for node_join.

* shell.py: Run in own thread, extend commands that are accepted
  (not all handled yet though).

+ I've added logging everywhere, makes it easier to see what's going on.