Rebase and fix of !268 by @toonn
I've addressed some of the review comments there (e.g. smaller DataCon for the common case) and adapted to newish code (support for binary literals, etc.).