C++11: Context::add(Args&&...) and ParseTree::add(Args&&...) can handle
const ParseNode& just fine, so remove Context::add(const ParseNode&) and
ParseTree::add(const ParseNode&) specializations. Added move ctor and
move assignment to ParseNode to handle stealing the guts of temporaries.
Also, directly assign/move Breakout union member.