Keyspaces #2

Part 1 in #86.

This adds some further functionality to the keyspaces types so that they can contain preset values.
```python
>>> ks(x=5)
>>> ks.key()
0x05000000
```

These values may not be overwritten.  What this allows is for edge build functions to specify a given key space and values when creating an edge.

As a utility you can check whether a field has been set or otherwise:
```python
>>> ks(i=7)
>>> ks.is_set_i
True
```