Preprocessor for metaprogramming

After rebasing and tweaking Irwin's branch a bit, then merging to master, I couldn't push it, so here's a PR to try another way.

Here's the git failure I got:

```
>git push upstream master
Counting objects: 174, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (125/125), done.
Writing objects: 100% (168/168), 34.50 KiB | 0 bytes/s, done.
Total 168 (delta 115), reused 37 (delta 26)
remote: fatal: early EOF
error: unpack failed: index-pack abnormal exit
To git@github.com:ContinuumIO/libdynd.git
 ! [remote rejected] master -> master (unpacker error)
```