Bump GC_collect_at_heapsize in GC_add_to_heap. In the normal case it is
recalculated straight after. But in the case where it's called directly
from alloc_mark_stack, it isn't. If the mark stack gets very large,
this can cause GC_should_collect to always return true, and
GC_alloc_large to get stuck in a loop calling GC_collect_or_expand.
Remove hb_large_block field (use 1 extra bit of hb_flags instead)

* allchblk.c (setup_header): Use (hb_flags & LARGE_BLOCK) != 0
instead of hb_large_block.
* private/gc_pmark.h (PUSH_CONTENTS_HDR): Likewise.
* mallocx.c (GC_realloc): Likewise.
* include/private/gc_priv.h (struct hblkhdr): Remove hb_large_block;
define LARGE_BLOCK to access corresponding bit in hb_flags (only if
MARK_BIT_PER_GRANULE).
Fix LARGE_BLOCK value used for hb_flags
(fix commit a49b495)

* include/private/gc_priv.h (LARGE_BLOCK): Redefine to 0x20 (to avoid
collision with MARK_UNCONDITIONALLY defined in case of ENABLE_DISCLAIM).
Group all compact fields of GC_arrays to fit in single page

* include/private/gc_priv.h (struct hblkhdr): Reorder hb_inv_sz field
to reduce alignment gaps on 64-bit targets.
* include/private/gc_priv.h (struct _GC_arrays): Reorder
_composite_in_use, _atomic_in_use, _unmapped_bytes, _all_nils,
_trace_addr, _modws_valid_offsets, _root_index, _last_stack fields
so that to have all compact (small-sized) fields in one memory page.
Merge pull request #30 from Hoops/loop-in-GC_alloc_large

Loop in GC_alloc_large
Update AUTHORS file
Add API function to set/modify GC log file descriptor (Unix)

* include/gc.h (GC_set_log_fd): New API function declaration.
* misc.c (GC_set_log_fd): New function definition (except for OS/2,
MacOS, Win32/CE and Android).