first draft of memory manager
better document change
slight cleanup, and make sure links always know their target entity
simplify/cleanup link_value.get handling
simplify link functions by realizing countlink() is a special case of sumlink() instead of the opposite
fixed exception message
simplified & optimized avglink with an int expression by using __future__.division
style fixes
rename LinkValue.target_expression to target_expr to be consistent with aggregate funcs and simplify accordingly
* renamed all link handling classes: LinkValue -> LinkGet and XXXLink to XXX
* rationalized __str__ methods for link classes (all are done in the base class), which simplifies stuff and fixes two issues:
  - __str__ for link.get() with an explicit missing_value
  - __str__ for all the link methods use the new styntax (linkname.XXX(...) instead of XXXlink(link_name, ...))
fixed __str__ for link.get(not a simple_variable)
save "original" arguments in FunctionExpr before we move kwargs to args and use those in __str__ methods
nicer __str__ for logical ops
link.get args are passed through so that __str__ is nicer
Merge branch 'devel' into memorymanager
more work on the embryonic memory manager... this approach is probably more work than I can spend on it
only forward a predefined set of attributes in Expr.__getattr__ so that I support most common numpy methods but don't create bogus expressions instead of raising an exception on nonexistent attribute access, I don't count anymore how many bugs this has created
fixed access to nonexistent attribute (detected thanks to the __getattr__ change)
removed half implemented __fields__ attribute. Does not seem needed anymore, as they all use the same structure anyway
factorize an AbstractFunction from FunctionExpr and made NumexprFunction inherit from that.

This adds support for multiple args and (early)arguments checking to numexpr-based functions and make them use the new standardized way to store arguments.
Made Where()  inherit from NumexprFunction.