Allow multiple and non-default crate_types

Note that at present there is no good error handling for fat-fingering
the crate type. This is a TODO.