Invisible.js: Reusable models for the client and the server