Implemented basic serialization for intermediate schematics

In my search through available JSON libraries, I came across Gson, which seems a lot nicer than writing everything ourselves. Everything's pretty basic and the "test" isn't much of a test yet, just something to see what it outputs. From what I can see there isn't anything to do with adding actual values to the schematic yet, just type definitions?

Also, I'm kind of lost on the whole TypeTypeDefinition / PrimitiveType / PrimitiveKind stuff. I recall seeing another pull request where they were removed... was that not merged in yet?

Aside: I think my formatter went a little crazy on some of the lines. Let me know if you guys care about those (although some of them were really long)

Here's the output from running that 1 basic test:

Fixes #86

```
{
  "name": "test",
  "userDefinedTypes": {
    "Bool": {},
    "type1": {},
    "String": {},
    "Int": {}
  },
  "portTypes": {
    "n1": {
      "attributes": {
        "imakey": {}
      }
    }
  },
  "nodeTypes": {
    "node1": {
      "attributes": {},
      "ports": {}
    }
  },
  "connectionTypes": {},
  "constraintTypes": {
    "constraint1": {
      "arguments": {}
    }
  },
  "nodes": {},
  "connections": {},
  "constraints": {}
}
```