Support for encoding metadata types

This allows declaration of some previously unusable intrinsics.
Encode instruction metadata
Merge pull request #51 from Ralith/encode-metadata-type

Support for encoding metadata types and instruction metadata