Support recursive type definitions

This allows for proxies to be created that can use a proxy type
within the definition of that same proxy type. This required the
new Foo interface and class family which essentially wrap the
existing Type and TypeBuilder clases, but allow for querying of
members on the builder (something which TypeBuilder does not
support). The Foo interfaces should probably expand to cover
everything needed by the Coders.

Close #4.
Remove IProxyClassCoder

ProxyClassCoder is cannot be substituted at this time so remove the
interface to it.