Added split, merge, and support for csv tables

also support for specifying custom delimiter when reading txt or csv.
also fixed save for virtual tables
also removed UpdateTableInfo bc made .len and .width into dynamic
property methods
Added basic aggregation method for tables

Also moved all main content from __init__ to core.py to enable other
submodules to access it easier.

Thoughts:

- Can be tidied up and improved in future, eg maybe add support for
different classification types (now is only categorical) by building off
of the classifier class in geovis.
- Also need to think about datamodel: should split and aggregate be
methods on the table class, or functions from the core module to use on
tables. Should they return a new table or modify the table in place? The
same rule should maybe then also be applied to creating joins (currently
a method that modifies table in place).
exclude files in excludefolder