Programs API

* [x] Model
* [x] Basic CRUD API
* [x] Support images

Everything's done and ready for review by @andrewhayward