Refactor the initialization routine

Also fixes the bug when requiring Goon driver would skip 
the goon protocol version check.
Print a nice error message for when :porcelain app hasn't been started