Make JSON format depend on hard-coded fields

Making JSON list agnostic to field names make it
easier to maintain data integrity (or rather, we can
*assume* that the data is correct).
Implement connect with site

Fix #36
Cleanup Site object ownership

Connection objects now takes ownership of the Site
object when connectToSite is called, and is responsible
to handling its lifespan.

If a Site object is not passed to a Connection object
(such as when the Site Manager views a site but does
not use it to connect), the object that generates the
Site object is responsible for its deletion.

Also make Connection's connectTo (with address and port)
function protected, to use as an implementation detail
only. Only connectToSite is exposed as interface.

Fixes #39
Implement site manager double click connect
Connect in new tab if current one has connection