Propagate API errors as exceptions
Return API response objects as Models (with save() etc) instead of Hashes

closes #1756
Add new user activation + setup script. closes #1738