Fix a number of stylistic issues in etc.linux.memoryerror.

* Made the registration functions public.
* Moved all public stuff to the top of the file to avoid mistakes like this again.
* Added `else` -> `static assert(false);` branch to the version forest.
* Fixed some minor code style issues.

This also makes the module actually usable.

(I still *strongly* disagree with throwing `NullPointerError` when dereferencing a < 64 kb pointer....)