Use a compiler plugin to generate the media types

DO NOT MERGE. This is a preliminary version.

The code has been split into two crates, one for the generator and other
for the content-type.

The custom build script is no longer needed, since everything is now done
via Rust.