Add an rxp reader

RXP is the streaming file format used by RIEGL Laser Measurement Systems (http://www.riegl.com). Support for reading rxp files is provided by RiVLib, RIEGL's own library which they release for use by their customers. RiVLib only supports reading rxp files, not writing them.

I've opened this pull request on **point-context-schema** as a way to ask a few questions that relate to the code I've written -- this branch probably shouldn't be merged until after **point-context-schema** and/or **point-context** are merged to **master**, and I'll plan on re-creating this pull request when that happens.

In general, I'm loving the new interface -- today's reimplementation was much shorter and cleaner than previous versions of the rxp driver.

## ReaderSequentialIterator::skipImpl

In my [skipImpl](https://github.com/gadomski/PDAL/blob/rxp-driver/src/drivers/rxp/RxpReader.cpp#L243), I have to create a new PointContext as a dumping ground for my skipped points. I'm forced to do this because the `Reader` and `ReaderSequentialIterator` interfaces do not save the "active" `PointContext`.

In PDAL/PDAL#391, @abellgithub and I talked about how we expect to only have one `PointContext` flying around at any one time, which makes me wonder if it's reasonable to save the `PointContext` passed into `Reader::addDimensions` or `Reader::ready` and forward that along to my iterator?

## Dimensions

I added a bunch of new dimensions, some of which are close-but-not-exactly-like existing dimensions. For example, I added "Amplitude" and "Reflectance", which are rigorously-defined quantities in Riegl's world and aren't exactly the same thing as "Intensity". What's the thinking on dimension-proliferation -- should I try to wedge new values into existing dimensions if at all possible, or should I be ok creating new dimensions? I recognize that the answer might be "it depends", but for now I'm just looking to get the general thoughts.