Almost fulfill spec.; add methods, do tests...!

Easy sailing from here. Implementation is simple, understandable, and
new features could easily be added (e.g. first/last names).

The ID system was very useful -- don't have to ever worry about
duplicate students.

add{Student, Test} methods return the new ID now, pretty nice.

Removing students & tests would work with some minor changes. Main
thing would be that the interface would have to use some method we
make available in TestDatabase to get all current student & test IDs,
instead of just going 0->numOf{Students, Tests}.

The IdOf methods haven't been tested much. I know that they don't work
when there are multiple students/tests with the same name

Most work done on taking input, though it's pretty ugly, hahah. I
just thought "well, it'll only be temporary".

Kept to our notes pretty good, too.

Added some comments explaining parts of implementation (e.g. in
Student).

TODO: Extend tests. Make a Test class and use a
HashMap <Integer, Test>, similar to the students hashmap. We could then
store info such as date, invigilator, etc., haha :D

TODO: More useful methods in TestDatabase. iunno, studentsTakingTest()?

TODO: Colour in the CLI class. That's your job, @xsanda.