Reduce Ice-generated C++ warnings

Rather than simply listing (and ignoring) all the warnings
that come with ZeroC-generated code we now suppress their
output at the cmake level.

In addition, using `cmake -Dfatal-warnings=true .`
will make all warnings an error which forces cleaning
up these issues.
Surround more Ice-generated includes
Also handle unused arguments
Also handle missing declarations
Also fix overloaded-virtual
Suggestions from Roger incl. strict push/pop

The `#error` on re-entrant warning protection
showed a number of places where the includes
needed to be adjusted.
Fix tests warnings
Fix casts in combined.vm
cmake: Add feature tests for warnings
Use vector.clear() rather than static_cast

Suggested by Roger that `static_cast<>(0)` for vectors
is confusing and possibly wrong.
Temporary modifications of fatal-warnings flag

In order to have fatal-warnings propagated to examples
and tests, it needs to come before the add_subdirectory
calls. Also, since we still have deprecated code, it's
necessary to ignore those globally in order to have the
build succeed.
Remove fatal-warnings flag in favor of BF version
More static_cast fixes after extra-warnings

Turning on extra-warnings shows a number of errors
that were not previously fixed. This commit fixes
a few whitespace issues and surrounds casts from
size_type to Ice::Int with `static_cast` to remove
the conversion warnings.
Merge pull request #3145 from joshmoore/reduce-cpp-warnings

Reduce Ice-generated C++ warnings