cleanup of semilinear sets

The first commit is a bit of a cleanup of header includes.

The remaining ones clean up the semilinear sets implementation.  No functionality should be changed.  The main goal here was to improve the code (simplify/make it a bit faster).

Let me know what do you think about it!