Containers: Array code reorganization.

Also explicitly mark the conversion operators as implicit.
Containers: simplify types in ArrayReference test.
Containers: properly test conversion of Array[Reference] to T* and bool.

Compilation of bool conversion fails for Array on "ambiguous overload",
even that the other overload is deleted. Will fix in the next commit.
Also test that the conversion is explicit and it is not possible to
write things like this:

	Array<int> a(3);
	int b = a + 7; // !
Containers: add proper conversion of Array[Reference] to bool.

The tests are passing again.
Containers: added TODO.
Utility: Fix Directory::read() for non-seekable files under libc++.

libc++ returns zero position and doesn't set the badbit if the file is
non-seekable, thus it is indistinguishable from empty files.
Utility: test Directory::read() also for empty files.

Just to be sure.
Merge branch 'master' into compatibility

Conflicts:
	src/Containers/Array.h