minor header cleanup
semilinear: make the header a bit more readable
semilinear: convert the .cpp file to 2 space indent

This is whitespace only patch.
semilinear: major refactoring and cleanup

This includes:
- simplifying some loops with C++11 for-each loops
- avoiding copying containers as much as possible (use const references
  and/or move semantics)
- adding const in a few places
- removing some unneeded code
Merge pull request #3 from michalt/cleanup

merged Michal's cleanup of semilinear set implementation