Reimplement API v2 on top of API v3 [#64]
Closes #64 (closed). Rebuilds API v2 as a translation/compatibility layer that calls into API v3. This MR is dependent on !676 (merged), !678 (merged), and !680 (merged) so it can take advantage of various improvements from those MRs.
Changelog: refactor
Edited by Ethan Reesor