HasLua trait

Redesigning `Push`, `CopyRead` and `ConsumeRead` to be more generic. This will unlock several new features, like reading a table inside a table.