Emit functions as available_externally instead of skipping them.

This finally fixes the performance regression due to missing
inlining after the switch to the DMD-style symbol emission
logic (what later became FuncDeclaration::needsCodegen).

In my tests, this slightly increased compile times in release
mode (~7% for a set of small-ish programs) due to the extra
codegen. The impact is that small because we were doing all the
extra semantic{2, 3}s anyway (only to throw their results away)
and still get to avoid the LLVM backend. The performance gains
are, depending on the benchmark, spectacular, as this was
responsible for things like std.array.front not getting inlined.
[cleanup] Fix a couple of typos.
[cleanup] Remove DtoMemoryBarrier (unused, unimplemented).
[cleanup] Remove unused getBiggestType/getPrefTypeAlign.
[cleanup] Remove unused DtoConstStringPtr.