New codegen approach for data constructors

@garyb I'll probably do some more experimenting with this to see if there's any simple way to call the constructor directly in the case of a fully applied call.