Large Update

Added a GUI interface with swing, currently you can change the size of
the src matrices whenever you want.
some more listeners are needed and that's about it.
also:
The GUI uses lots of refs and transactions, so thread safety is kept
with synced locks etc..
Everything was splitted into a few files to fit description.
Also, functions which implement functions inside them as first-class
citizens were added.