Performance optimizations for build

This PR refactors how dynamic setters/getters are handled.
Before they were set on each new DAO()/DAOFactory.build - Now they are added to the prototype of the DAO.
That severely impacted performance even for models that had no dynamic setters/getters, since the logic for this was bad.

I'm seeing a decrease in duration from 1000 to 100ms when doing a 1000 simple builds (with no dynamic setters/getters). But in any case this should be a performance increase overall - Prototyping usually beats constructing inside the instance.