Add a HACKING file.
gc: Rename gcalloc.d to os.d

In the future this file will hold more OS-specific functions needed by
the GC, and this file looks like a good place to put them, so all
OS-specific functions are grouped in a single module.

Also, having the prefix gc on every file, when all this is inside a gc
package, doesn't seem to make a lot of sense, thus it will be removed
progressively.
first pass of install targets
fix copy to not result in an extra layer of each subdir
gc: Remove (de)committed memory distinction

The distinction is only useful for Windows, Posix has no standard way to
do this, even when apparently you can emulate it in Linux using
PROT_NONE while mmap()ping (but Linux don't commit memory until you
write on it, so is pointless to use it in Linux).

This distinction makes the code a little more complex, because is spread
in several parts of the GC, and it doesn't have an evident positive
impact (having memory mapped but not committed is a very transient state
anyway, except on extremely rare situations, the GC will commit all the
memory eventually, as you keep allocating, it could take more or less
time, but eventually you'll have all your memory committed just before
the first time the collector runs).
Merge pull request #496 from leandro-lucarella-sociomantic/cdgc

gc: rename module and remove (de)committed memory distinction
Merge pull request #495 from braddr/install

draft install target
simplify unittest for critical region
improve critical regions

- use a fine grained mutex to negotiate critical regions
  and thread suspension

- we no longer have to suspend & resume a thread
  that is in a critical region
gc: Remove redundant private protection from imports
Thread.suspend must now be synchronous

So remove the comments about a possible different implementation
and actually check for sem_wait failure.
gc: Update Copyright years
gc: Group extern (C) declarations to avoid repetition
gc: Rename modules to make more sense

Remove the `gc` prefix from `gcbits` and `gcstats` (we already have the
`gc` package to know where they belong).

Rename `gcx` to `gc` because it holds the main GC implementation and
`gc` to `proxy` because it basically holds a GC proxy.

As a side effect, `src/rt/memory.d` needs to be fixed to import the GC
interface from `core.memory` instead of accessing directly to the GC
implementation.
Merge pull request #500 from leandro-lucarella-sociomantic/cdgc

gc: Some small cleanups and file renaming
eagerly allocate Thread locks
exponentially increase wait time up to 10ms
simplify loop
Merge pull request #498 from dawgfoto/cleanupGC

simplify loop
enable docs for critical regions