A Simple GGX Implementation

Every time I start a new renderer, I find myself having to piece together a GGX implementation from scratch. This normally involves re-reading whatever Eric Heitz has published lately as well as reference implementations like PBRT, Cycles or Appleseed. The implementations in these renderers are always tied to their integrators and material systems in more or less complicated ways, where all I want is just a simple sample()/eval()/pdf() triad.