Created HeapFile and made BufferManager as a singleton patterned class

* Create and Instance property of BufferManager which will make sure that
  we have only one instance of BufferManager
* Allow the option to set the number of Pages in the pool via a static
  method. If not set, then the default value is taken
* Create a HeapFile implementing Iterator<IStorageType>
* The HeapFile has a method Insert which takes IStorageType object
  and inserts it into the next available Page which is fetches from
  BufferManager using GetFreePage method