sigaltstack_fiber: add platform-specific (APPLE & x86_64) sigjmp_buf init
libmn: abstract out context for "system call"

Whenever the user makes a call into libmn, we block the CPU alarm
and then get the system lock. We abstract out these details
into system_context() and yield_release(). This also allows us
to avoid storing an extra bit of state per process for the
blocked state of CPU alarm as well as avoid an extra
libmn::platform::cpu_alarm_block() call.
posix_tls: refine error handling
initialize TLS variables when module loads

Remove C++11 thread-safe static initialization from hotspots,
initialize ahead of time when the module loads.
GNUmakefile: clean now cleans all object files, add RELEASE mode
libmn: store port metadata on heap

Before this commit the mn_port_t datatype was an integer
key into a shared hash table that pointed to the metadata for
that port. As a result, we pay the cost of a hash table lookup
each time we want to manipulate the port. This commit removes
the shared hash table and converts the mn_port_t datatype into
a pointer to a heap-allocated structure that stores the port metadata.
This replaces the expensive hash table lookup with a cheap pointer indirection.
libmn: decrease DEFAULT_STACK_SIZE in release mode
GNUmakefile: make primesieve_go target depend on source file
libmn: make mn_port_t more type-safe
libmn: rename yield_release() to switch_to_next_proclet() and simplify switch process

There's no need to pass a resource acquisition context through system_context()
and yield_release(). yield_release() can only be called in
system_context() so we can be confident that the resources will be acquired
and will be released when it is called, so just make sure those invariants are
held in yield_release(). Also rename to switch_to_next_proclet() since that
better reflects what it does.
libmn: remove unused includes