Introduce reflections API rather than our home-grown stuff

Reflections can use a manifest, which is really cool