Move panel view out into its own class

This is the first step in breaking out the commit view into tiny seperate view
objects to clean things up a bit.