Pull network interaction into a Client object

* Extract private class methods from RestfulModel
* RestfulModel doesn't have to know about network interaction
* Can now test JSON responses! (some duplication currently)