initial support for dirty schedulers and dirty NIFs

Add initial support for dirty schedulers.

There are two types of dirty schedulers: CPU schedulers and I/O
schedulers. By default, there are as many dirty CPU schedulers as there are
normal schedulers online, and there are 10 dirty I/O schedulers (similar to
the choice of 10 as the default for async threads).

Dirty schedulers are disabled and conditionally compiled out by default. To
enable them, you must pass --enable-dirty-schedulers to the top-level
configure script when building Erlang/OTP.

You can specify the number of dirty schedulers with the command-line
options +SDcpu (for dirty CPU schedulers) and +SDio (for dirty I/O
schedulers). There is no support yet for changing the number of dirty
schedulers programmatically at runtime. You can retrieve the number of
dirty schedulers by passing either dirty_cpu_schedulers or
dirty_io_schedulers to erlang:system_info/1.

Currently only NIFs are able to access dirty scheduler
functionality. Neither drivers nor BIFs currently support dirty schedulers.

If dirty scheduler support is present in the runtime, the initial status
line Erlang prints before presenting its interactive prompt will include
the indicator "[ds:C:I]" where "ds" indicates "dirty schedulers", "C"
indicates the number of dirty CPU schedulers, and "I" indicates the number
of dirty I/O schedulers.

The dirty NIF API is documented in the erl_nif man page. The API closely
follows Rickard Green's presentation slides from his talk "Future Extensions
to the Native Interface", presented at the 2011 Erlang Factory held in the
San Francisco Bay Area. Rickard's slides are available online at
http://bit.ly/1m34UHB .

To determine whether dirty NIF support is present, native code can check to
see whether the C preprocessor macro ERL_NIF_DIRTY_SCHEDULER_SUPPORT is
defined.

Add a simple dirty NIF test to the emulator NIF suite.

There are currently 3 tests in the emulator test suite that fail with this
commit but do not fail when run against master. These will be fixed in a
later commit or by amending this commit.