(1) changed some object names to make the naming convention consistent: Parser/Content -> StreamParser/Content, Task -> StreamTask
(2) renamed the package stream to model and separated Stream.java to default package. Stream is the amalgamation of all other components and shouldn't belong in a specific package
(3) also added a new package exception
(4) added the json .jar library in lib/
(5) modified the lowercase algorithm: only the hashtable key is forced-lowercase; everything else is case-preserved (rather than forcing input to be lowercase)
(1) improved IO process: now SAVE_LOCATION can be defined from Stream.java
(2) found a bug in undo: delete/add/undo/undo in that order will result in the latest added Task to be pushed back, not the original deleted Task. fixed it.
(3) preparing for logging: list of logMessages and timeStart
(1) changed the error handling mechanism: all methods in Stream.java only throws, not try/catch-es; try/catch occurs only in processAndExecute
(2) added logging operation: after each process/error, message will be logged to user and archived, and upon exiting the log file can be found in the same directory as the task file