Added fields to Memory Object

Addresses #118 

Added the following fields:
* Memory_Source
* Block_Type
* Region_End_Address
* is_volatile

Added the following types:
* BlockTypeEnum: an enumeration of block types
* BlockType: an encapsulating type allowing the union of xs:string and BlockTypeEnum

This was attempted before with the #175 pull request, but had to be redone because of a bad merge.