Validate node nesting structure

This is a better version of #644. Fixes #101.
Inline nodeCanContainNode module into validate fn
Consolidate validation logic into DOM modules
Validate all node nesting based on HTML spec