Define a string based variant of `fields`

It can be handy to be able to define `fields` just using a string.
Split up tests

Note that the specification API has changed. Now the relevant modules
need to be passed within an object and most are optional.
0.4.0