hammer2 - freemap part 1 - initial block allocator and media support

* Freemap document (FREEMAP in this directory)

* temporarily turn off clustering until the freemap gets that capability
  (mixed buffer sizes can be adjacent atm).

* Remove the freemap_blockref[1] from the volume header and replace it
  with a blockset array (8 blockrefs).

* Implement dynamic creation of freemap nodes and leafs on an as-needed
  basis using the normal indirect block creation code.  Most of the standard
  file handling code is reused for the freemap support.

* Major cleanup of hammer2_chain.c, the duplication code, the indirect
  block creation and handling, and the chain->flag handling.
lvm: Fix two wrong array indexes.

Both files are not used by us. Just in case someone wants to play with
them.
hammer2 - freemap part 2 - cleanup & performance pass

* Increase minimum I/O from 1K to 16K (HAMMER2_LBUFSIZE).

* Adjust some use cases, increasing the smallest indirect block to the
  minimum IO size 4K->16K.

* The BREF_TYPE_FREEMAP_LEAF bitmap is now embedded in the chain, allowing
  us to use the 256 byte bitmaps more safely.  As with inodes, a read-in
  involves using a larger buffer-cache buffer and then copying the data
  into the chain.

* Avoid unnecessary reads from disk when allocating blocks that are less
  than the minimum IO size.  If it is determined that the bitmap bits
  covering the minimum IO size are 0 (unallocated), we pre-validate the
  larger buffer cache buffer so the later bread() does not have to issue
  any actual reads.

  Pre-validation for allocations larger than or equal to the minimum IO
  size is already handled in the chain locking code.

  With this change, a cpdup into H2 will issue mostly writes and is able
  to avoid nearly all reads.

* Make some progress formalizing chain-embedded data.
bmake: Fix wildcard srcs for phony targets

Bug fix created by Simon G. at BSDcan 2013 when Baptiste mentioned the
incompatiblity with legacy make seen during adding support to ports for
bmake.  There is no impaet for world/kernel builds.

Taken-from: FreeBSD SVN 250773 (18 May 2013)
Merge branch 'master' into gsocdrm_github