Updates node constructor to be protected.
Updates document constructor to be private, adds factory method that creates shared document object.
Adds document tests.
Build: enables document tests.