Initial pass on supporting Puma

This isn't entirely complete but it's a start in the right direction

Fixes #4