TS-1006: Add an '--enable-reclaimable-freelist' option

Signed-off-by: Yunkai Zhang <qiushu.zyk@taobao.com>
Signed-off-by: Zhao Yongming <ming.zym@gmail.com>
TS-1006: Add a new wrapper: ink_atomic_decrement()

This is a wrapper of __sync_fetch_and_sub() in GNU env.

I need this wrapper in reclaimable freelist, as ink_atomic_increment()
can't work correctly in some situation by unknown reason.

Signed-off-by: Yunkai Zhang <qiushu.zyk@taobao.com>
Signed-off-by: Zhao Yongming <ming.zym@gmail.com>
TS-1006: Introduce a reclaimable InkFreeList

Here are some advantages of this new memory pool:
* Introduce per-thread and per-Class cache(pool), all
  operations are lockfree at runtime.
* Memory size in cache can shrink automatically.
* In the same thread, all Class with similar size will share
  the same cache.
* Use wait-free queue(InkAtomicList) for synchronization.
  In a producer-consumer alloc-free scenario, it won’t lead to
  thread cache of producer starve.

This memory pool is disable by default. We can enable it by configuring
TS as following:
$ ./configure --enable-reclaimable-freelist

NOTE: '--enable-reclaimable-freelist' option will be ignored if
      '--disable-freelist' option is given.

Signed-off-by: Yunkai Zhang <qiushu.zyk@taobao.com>
Signed-off-by: Zhao Yongming <ming.zym@gmail.com>
TS-1006: Make InkFreeList memory pool configurable

Introduce four configurable parameters in records.config file, which will
be used to control debug information and adjust the behavior of reclaimable
InkFreeList memory pool:

* proxy.config.allocator.debug_filter
  Dump debug information according bit mask of debug_filter, if a bit is set
  in the mask, then debug information of the corresponding action are dumped:
   bit 0: reclaim memory in ink_freelist_new
   bit 1: allocate memory from partial-free Chunks(if exist) or OS

* proxy.config.allocator.enable_reclaim
  The value of enable_reclaim should be 0 or 1. Default 0, reclaim disabled.

* proxy.config.allocator.reclaim_factor
  The value of reclaim_factor should be in 0.0 ~ 1.0, allocator use it to
  calculate average value of idle memory in InkFreeList, which will determine
  when to reclaim memory. The larger the value, the faster the reclaiming.
  This flag is effective only when enable_reclaim is set.

* proxy.config.allocator.max_overage
  Allocator will reclaim memory only when it continuously satisfy the reclaim
  condition for max_overage times. This flag is effective only when
  enable_reclaim is set.

Signed-off-by: Yunkai Zhang <qiushu.zyk@taobao.com>
Signed-off-by: Zhao Yongming <ming.zym@gmail.com>
TS-1006: add CHANGES