Attempt to get Pull Request 478 to build on gcc

- Changed methodology for enable_if on erase() and touch()
- Added iterator unit tests
- Addressed RIPD-410
- Made set/multiset iterators const

Regarding the set/multiset iterators, see section 1.5 of
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2009/n2913.pdf
as pointed out by Vinnie.