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
Allow supplementary and item view layout attribute methods to be overloaded.

This change adjusts "layoutAttributesForElementsInRect" 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.

As an example "layoutAttributesForSupplementaryViewOfKind"
can be overloaded to manipulate header frame values and
zIndex to mimic a floating sticky header similar to
UITableView.
Stretch header and footer size to fit the size of the collection view. Added header and footer in demo project