General purpose JS client side MVC framework