Convert project to ARC.
Make use of property auto-synthesis.
Remove >= 10.6 and >= 10.7 guarded code.

PXSourceList 2.0 will require the 10.7 SDK.
Replace layout and drawing macros with constants and inline functions.
Make -[PXSourceList numberOfGroups] a readonly property.
Remove forward-declarations of internal methods in PXSourceList.
Implement px_allProtocolMethods() function.

This function uses protocol_copyMethodDescriptionList() from the Objective-C
runtime to get information about all the methods from a particular protocol.
Implement +[PXSourceList methodNameMappingsForProtocol:]

This method gets all the method names from the given protocol and creates a dictionary
mapping from these methods to those which will be used by the Source List delegate and
data source. In particular, it replaces occurrences of "outlineView" with "sourceList" in
a case-insensitive way and matches the case of the "o" and the "v" in the replacement.
Create a static forwarding method map.

This will be used to determine which message to send to the Source List
delegate and data source when forwarding outline view delegate and data
source messages.
Add the originating protocol to the forwarding map.

When we need to forward a message, we need to determine whether to send
it to the Source List's delegate or data source. This commit modifies the
forwarding map to add the originating protocol of the method in the map.
Override -respondsToSelector: on PXSourceList.

For the NSOutlineView delegate and data source methods that are in the
forwarding map, this implementation asks the source list delegate and
data source whether they implement the method.
Implement +[PXSourceList methodForwardingMap].

This abstracts the underlying dictionary and lazily instantiates it. This
commit also implements +addEntriesToMethodForwardingMap: which abstracts
away adding new mappings.
Blacklist certain outline view delegate and data source methods from being forwarded.
Implement +[PXSourceList methodForwardingBlacklist].

This contains the names of methods which we don't want to create mappings
for in the method forwarding map.
Implement +[PXSourceList customMethodNameMappings].

This is an explicit mapping between outline view delegate/data source method
names and source list delegate/data source method names for where the mapping
cannot be automatically generated.
Use custom method mappings when constructing the method forwarding map.
Override -forwardInvocation: on PXSourceList.

Uses the data in the method forwarding map to forward the invocation to
the correct object with the mapped selector.
Remove explicit method forwarding implementations.

This commit removes stubs of NSOutlineViewDelegate and
NSOutlineViewDataSource method from PXSourceList which simply forward
their implementation onto the source list delegate and data source.
Purge NSOutlineView's -respondsToSelector: cache when changing the delegate and data source.

When the source list delegate and data source changes we want NSOutlineView to remove any
cached data it has on what methods its delegate and data source respond to. Since PXSourceList
is always the outline view's delegate and data source, we need to call -setDelegate: and -setDataSource:
on super first with nil then back to the PXSourceList instance again.
Modify when PXSourceList is the outline view's delegate and data source.

Since we can only forward messages meant for the source list delegate and
data source when we have a delegate and data source, this commit makes sure
that PXSourceList is only the outline view's delegate and data source when
it has a delegate and data source respectively.