Removed source block object:

Defined an interface for the encoder object, which hides the source
block objects from the application. Additionally, the interface allows a
future implementation that keeps in memory only one source block at a
time (for large data objects).