Generate service wrappers for interface types.

Add a new GenerationOptions type to describe the type-specific options
for generation. Change the generator to use this new options type.

Change the type filters to exclude non-interface types and derive the
output wrapper type from the wrapped service interface. For example a
service interface IService should have a generated wrapper called Serivce
output to Service.cs in the output directory.