Retarget ETL to freestanding C++ environment.

I've loosened ETL's restrictions from 'no use of C++ standard library'
to 'use of freestanding portion of C++ standard library.'

The freestanding environment defined by the C++11 standard is a subset
of the full library environment.  It's actually larger than I'd like,
but an attempt to shrink it got shot down.  For ETL's purposes, we can
use any of the standard facilities that don't have a runtime cost --
meaning that exceptions, non-placement new, and much of cstdlib are off
limits inside ETL.

I made this change for two reasons.  First, while it's good for ETL to
make as few assumptions about its environment as possible, users will
have a basic C++ library available in practice.  Second, many of the
headers included in the freestanding library actually describe the
compiler itself (type_traits, limits, and cstdint chief among them).
Replicating this in ETL is possible, but it's subtle and tedious.

Note that this is a breaking, non-backwards-compatible change.  Clients
must be modified to use standard library facilities in cases where the
equivalent functionality has been removed from ETL.  Since as far as I
know all ETL's clients are in a directory on my hard disk, I thought it
best to make the change now.

Notice that:

 1. type_traits.h still exists.  It now provides extensions to the
    standard facility.

 2. assert.h is untouched.  ETL_ASSERT (and particularly ETL_ASSERT_CE)
    is better defined than the standard one, I'd argue, and I'm going
    to continue using it inside ETL.
stm32f4xx/gpio: fix conversion warning.