Handle empty initializer lists {}.

This is a workaround for LWG/EWG 2193, in which the default
constructor for vector<T> is explicit.

Also ensures compatibility with GCC 4.9.
Clang might begin to work.
Make remove_element return index of last element removed.
Implement tracking of child / parent contexts.
Add new function replace_element( ) to util.H
Delete intermediate tokens with only 1 child.

This avoids building up long chains of useless tokens.
Allow changes in non-terminal contexts by switching to a copy first.
Split computation_record out of graph_register.H
Add argument to insert null regs at startup.
Add a garbage collection callback to the pool type.
Remove unused code Fun_normalize( ).
Add computation_record::source.
Add a reg::clear().
Add function reg::check_cleared().
Split clearing of regs and computation_record's.
Add necessary get_computation() method.
Make expand_memory( ) also virtual.
Rename some members to be consistent with 'pool'.

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.
Rename more member functions to be consisten with pool<T>.
Update the pool<T> class.
Change checked to marked.