Use PLClang.h in umbrella header

This includes the error codes and error domain.
Make PLClang header public
Lazily load all properties for a cursor

Profiling revealed the PLClangCursor initializer's creation of the USR,
spelling, and display name strings to be a significant source of CPU use
when visiting the cursors of a translation unit. In situations where
only a subset of the cursors are of interest, such as those not in
system headers, the work done to create these strings in the initializer
slows down the application unecessarily. Lazily load these properties as
well to remove this overhead.
Defer reading the expansion location until needed

When visiting all the cursors in a translation unit it is common to skip
over those in system headers. Profiling revealed
clang_getExpansionLocation() to be a relatively expensive operation that
is not needed to query clang_Location_isInSystemHeader(). Defering
reading of the expansion location until an associated property is read
allows isInSystemHeader to be read without incurring the cost of
obtaining the expansion location for the tens of thousands of
declarations in system headers.
Add PLClangAvailabilityKind

This maps to clang_getCursorAvailability() and exposes the overall
availability for a cursor, taking into account both unconditional and
platform-specific availability attributes.
Add "unconditional" prefix to unconditional availability properties

This more accurately represents the information conveyed. An entity can
be deprecated on a per-platform basis, in this case isDeprecated would
have returned false since the entity was not deprecated via an
unconditional deprecation attribute.