Define subclasses for each type of courses

* Two models named `GeneralCourse` and `MajorCourse` was newly defined.
  These models inherits from model `Course`.
* Some attributes of model `Course` was moved to its subclasses.
* A new model named `GenEduCategory` was newly defined, and one-to-many
  relationship was defined between this and `GeneralCourse`.
* Because one course should be in one campus, a new fixture department
  object was added to express the relationship between a campus and
  general courses. Also, `department_id` attribute of `Course` object is
  no more optional.
Add `name` attribute to `Course`

* This attribute represents the name of subject which is of the course.
Update dash.catalog.models.CreatedAtMixin

* This mixin class was modified to provide a column of decorated type
  which reads/writes timestamp data with UTC time zone.
* An utility function named `utcnow()` was added which returns
  `datetime.datetime` object with current timestamp data with UTC time
  zone.
* python-dateutil was added as a new dependency.
Use Flask-RESTful instead of Flask-Restless

* Flask-Restless was replaced with Flask-RESTful in dependencies.
* The test code which checks the equality of timestamp data was modified
  because DateTime field of Flask-RESTful does not express microsecond.
Change the design of REST API classes

* Some refactoring was done to reduce repeated code.
* A class decorator was devised for representing resources under other
  resources, which replaces metaclass-based design. This makes code a
  little bit easier to understand.
Supply more fixture data for catalog

* To test catalog data from multiple campuses.
Make some relationship attributes joinedload-ed

* This prevents additional query emission when such attributes are
  accessed.
Refactor & bug-fix on catalog API code

* `query(cls, **kwargs)` method of `ResourceWithQuery` class now makes
  query object in different way, which allows aliased class object to be
  used in query. For this, default query class for SQLAlchemy session
  was set to `flask.ext.sqlalchemy.BaseQuery`.
* A bug was fixed which `Entity.get()` raised a
  `sqlalchemy.orm.exc.MultipleResultsFound` exception when the query is
  joined with other models.
* A bug was fixed which `query(cls, **kwargs)` did not worked as class
  method correctly when decorator `when` was applied to subclasses of
  `ResourceWithQuery`.
Make result of collection API sorted by id
Abort with status code 404 when entity isn't found
Refactor catalog API test code

* `Url` class now has a new method named `append(self, child_url)` which
  appends another `Url` object after itself. The prefix of `child_url`
  will be ignored.
* Functions testing API endpoints for children entities of campuses was
  moved to test case classes of which the type of these entities is. For
  example, test function for API endpoint which gets a department object
  under a campus object is moved from `TestCampusApi` to
  `TestDepartmentApi`.
Add API endpoints for subject and course objects
Add API endpoints for `GenEduCategory` objects

* Assertion for `category` attribute of `GeneralCourse` object was added
  to test function.