1. abstract class Loggable for classes that logs
2. rewritten some methods
gave order-related methods (sort, ...) its own logic class (make it more OO!)
de-utilized BaseLogic, used Loggable instead (makes more sense right?)
SearcherLogic for search and filters
renamed TaskLogic to ModificationLogic and tried hard to shift all modification processes there... not 100% done but significant progress
DeleteLogic to handle delete and recover process
StackLogic renamed to UndoLogic, and now StackLogic is, aptly, an interface
made almost all components a singleton
converted DeleteLogic to CRDLogic (to handle Create/Read/Delete processes), ready to convert StreamLogic to overall executor logic
extracted all execute methods to StreamLogic, added UIUpdaterLogic and CRDLogic
de-utilized StreamExternals and tidied up the docs
singleton implementation for IO and Parser and tidied up some stuffs
De-static-ified StreamIO and implemented Loggable to it. Also reduced the visibility of some Logic class methods.
moved index number checking away from parser (technically, out of bounds is not parser error). in exchange, introduced StreamRetrievalException to handle index out of bounds.
added StreamRestriction for restricted input, and allowed IO to access model directly
tidied up some logic classes