Use copy constructors instead of overriding dup/clone

This modifies Sequel::Model to use Ruby's "copy constructors" to do the work of duplicating/freezing internal data structures instead of overriding `#dup` and `#clone` directly and then `instance_eval`ing the result.

This makes duplicating and cloning more consistent with how Ruby's core/stdlib behaves, and makes the behavior easier to extend in subclasses, as `self` in the bodies of the methods is the duplicate instead of the original.