enhance tests based on current documentation
reformat, minor restructure
add missing methods
use 'interface' for things that shouldn't be constructed by hand
convert Connection to an interface so EventEmitter's methods don't need to be listed
validate's error parameter should be optional