Cleaned up the way registration errors are handled.

* The use of booleans to note registration success and failures
  have been replaced with the use of exceptions. The exception
  RegisterFailedException was created to support this.

* The return type of the registerStudent() function has been
  changed from bool to void to support the change to using
  exceptions as well.

* RegisterServiceImpl.java:Line 34; Reminder to check with Navin
  the ideal way of handling this.

* TODO: The client does not differentiate between random server
  exceptions and exceptions caused by integrity constraint issues.
  Some code should be written to handle the two differently.