Work towards more generic node.

I'm defining a new class node_wrapped contains a node (in the same
way that tree_wrapped contains a tree).  The idea is that if we
wrap a node with a data slot of Rcpp::RObject then provided that
the node<T> has a wrappable type T we can convert to
node_wrapped<Rcpp::RObject>.

It'd be nice to do this without going through a wrapper, but if
we target node<Rcpp::RObject> in this way then we get a recursive
set of calls to wrap (probably get-aroundable with some template
magic, but this current approach involves the least amount of
depth of understanding of how Rcpp's as/wrap and type traits work).

This will probably slow down the C <-> R translations a bit, but
saves writing a ton of code.  This will be important when we start
making trees of specific types because we should immediately be able
to start accessing them.
Progress towards a generic tree export, and exposing less of the tree

Moving away from the iterators now that this is mostly working.
Major surgery still to come.

This is mostly to support trees with exotic data types without
writing lots of boilerplate (required by the work on models) and
to let the trees be useful outside of forest and in packages that
would use it at the C++ level (like diversitree2 will).
Remove old xnode/xtree in favour of new exported tree type.
More informative typedefs in node/tree_wrapper
Gaussian distributions now proper exported type
Basic branch_pair type
Header reorganisation
Header reorganisation for testing code
Header reorganisation for main tree classes
Default constructor for gaussians
Node conversions with gaussians as the data type

Mostly just to check that all the mucking about with types works.