Remove PUGI__COMPACT helper

Also remove get() methods on pointer wrappers - this makes the surface
area smaller so we can create more of them easier.
Rework compact_pointer implementation

Split the implementation into a generic one with adjustable range and a
special implementation for parent (may need to use 2 bytes on that one
later).

Optimize compact_string and compact_pointer to use minimal amount of math
and move slow hash paths into no-inline functions so that compiler can
inline the fast-paths.

Merge compact_pointer_generic and compact_pointer_forward and optimize.