Clean up Identifier code and extract MultiRange class for future testing
Use new stream extraction in parsing. Applied 'Rule of Zero' to all classes which have tests, and the "== definition implies != definition". Finally, pull MultiRange class out of Range class. This required many header changes to allow MultiRange to be defined.