`std.typecons.Rebindable` now supports all types

`Rebindable` can now be used to store and rebind values of any type, including
`immutable struct` values.

To ensure const safety is preserved, the stored values cannot be accessed
by reference.

The implementation used for all previously supported types (classes, interfaces
and arrays) is unchanged.
