Compound Interface Support

Adding support for compound interfaces. Each interface is now explicitly implemented to avoid problems with ambiguous members. Also a tiny bit of clean up.