Remove references to Report and FFI from LICENSE

The LICENSE claimed that the source code of containers comes from three
sources:
* from GHC project, licensed under GHC license
* from Haskell Report, licensed under Haskell Report license
* from FFI, licensed under FFT license
It did not specify which fragments of code came from where. That caused
confusion among the containers users.

Me (Milan Straka) and Johan Tibell believe that in the containers source
there is no code derived from Haskell Report, and that in the containers
source there is no code derived from FFI, so I removed the references to
Haskell Report and FFI from the LICENSE.

Now the LICENSE file contains only the GHC license, without any
comments.
Added `foldMapWithKey`.
Do not use Typeable1..3 in GHC >= 7.7
Merge pull request #25 from dreixel/master

Use the new Typeable class in GHC >= 7.7
Move the INLINE pragma after the function.

All other INLINEs are after function bodies.
Improve Foldable instances.

- Employ implementation techniques used in normal folds, i.e.,
  * Inline fold and foldMap
  * Capture the function argument and do not pass it in the worker

  The Foldable.fold is only INLINABLE, because mappend and mempty depend
  only on Monoid dictionary and are fully specified when Foldable.fold
  is specialized. On the contrary, INLINE foldMap to allow the mapping
  function to be inlined.

  This improves complexity by ~60%.

- For Set and Map, add special case for a leaf. This avoids calling
  mempty for the Tips and mappending them with the value in the leaf.
  The improvement is further ~35% for Set and ~30% for Map.

  The leaves are recognized by comparing size of the tree to one. They
  could also be recognized by comparing left and right subtree to Tip,
  but that is slower.

  Also, cases when only left or right subtree is Tip could be
  recognized, but the implementation is still slower than recognizing
  only leaves using the tree size. It can be proved that at least 66% of
  Tips are under leaf nodes, so we miss at most one third of Tips in
  current implementation and do not cause so much code growth.
Improve Traversable instance of Map.

Similarly to Foldable instance (commit #29d3fbcc), add a special case in
traverseWithKey when traversing a leaf. In this case, the Tips under the
leaf are not traversed. The speedup is 25%.

See the log of the mentioned commit #29d3fbcc for discussion of
alternative implementations.
Merge pull request #24 from ekmett/master

Added `foldMapWithKey`.
Optimize Map.foldMapWithKey.

Use optimalizations from foldMap and traverseWithKey -- associativity
and test for leaves.
Strict modules only strict in values inserted

Before all value arguments would be evaluated, now they are only
evaluated if they are actually inserted into the map.
Bump version number to 0.5.3.0
Remove redundant import
Merge GHC HEAD
Import warning fix for GHC 7.7

The unused import check is now more agressive so

    import Prelude hiding (foldr)

creates a warning if nothing from the Prelude is used.
Bump version number to 0.5.3.1