Added layout support for section headers and footers. 

Header and footer sizes are controlled via the properties:

 * headerReferenceSize
 * footerReferenceSize

Or dynamically (per section) by the protocol methods:

 * referenceSizeForHeaderInSection
 * referenceSizeForFooterInSection

In addition "layoutAttributesForElementsInRect" is updated to use 

 * layoutAttributesForItemAtIndexPath
 * layoutAttributesForSupplementaryViewOfKind

for frame values instead of:

 * headerFrameForSection
 * itemFrameForIndexPath
 * footerFrameForSection

when determining rect intersection. 

This makes it possible to overload either layoutAttribute
method in a subclass to dynamically modify frame values and
other attributes.