Shim2

**Work-in-progress** feature request for #31.

This PR is a major overhaul of `/parse`, partly because I anticipate we will want to add more preprocessor directives in the future.

So, right now, there are two recognized "directives:"
##### shim
```go
//msgp:shim MyEnum as:string using:(MyEnum).String/myenumStr

type MyEnum uint8

func (m MyEnum) String() { /* */ }

func myEnumStr(s string) MyEnum { /* */ }
```
`shim` uses a pair of conversion functions to convert one type to another in the generated code. Among other things, this allows for Go's `const`/`iota` blocks to be turned into strings during encoding.

##### ignore
```go
//msgp:ignore TypeA TypeB TypeC
```
`ignore` just tells the generator not to generate code for the named types.

#### TODO
- Now would be a good time to make processing and generation run in parallel
- Maybe we want slightly different semantics for type conversions? Right now it only supports types that map to `gen.Base`.