Video Detail Page, with Voting

This builds on @craigcook's work in #241 and hooks up his frontend code to make it fully functional. Adding as a new PR for reviewing and merging purposes.