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.