Updated range tests to use more meaningful (non-nullptr) pointers; updated predicate tests to check the state is correct
Update unit tests to centralise constants; added convertibility checks within the add functions; added unit tests to check for non-const get paths
Added constexpr move function, used this to move parameters as appropriate. Added make functions which will start to be used in object construction (uniformly handles the predicate storage which was causing combinatorial explosion)
Added more uniform make function specification, and getters that return NotPresent() when the item is not present in the given Range
Added removeX functions, added unit tests and enhanced the tests for the getX functions where the Range does not have the value