SSP-1148 , SSP-1149

* Refactored External data service/persistence layer to encourage re-use
* Data Model Changes for Course Programs
* Create External API for Course Programs