This reverts the relevant bits from #21746 so that style and dependencies can
build with stable.
This is important because:
* `selectors` is a published crate.
* Gecko compiles with stable (more or less).
I reviewed that PR under the assumption that the union feature was stable, since
untagged unions are stable since 1.19, but turns out that smallvec uses non-Copy
types in unions, which are still unstable.
This leaves the union feature used on Servo, so that it gets testing, taking
advantage of features being additive.
We had a mix of 0.6.2 and 0.6.5 (which is the current release),
this unifies to the latest version. It also enables the union
feature which removes the discriminant, reducing memory usage.
* adds a hashglobe::alloc::realloc, as that was previously not implemented,
copying and simplifying from liballoc_system.
* routes malloc and realloc calls through hashglobe::alloc::, instead of
doing it via direct 'extern "C"' calls.