Containers: removed explicit element access from Array.

Element access can be done via operator T* (the test verifies that),
moreover this feature might not be always what is desired. Updated the
documentation to mention main use case.
Containers: added ArrayReference wrapper.

Unlike Array this class doesn't do any memory management.
Utility: added forgotten forward declarations.
Containers: allow to create Array from nullptr, updated tests.

Added check that Array is not implicitly convertible from std::size_t,
documented Array(0) ambiguity.