Add Category entity
In this change, we have add the Category entity, which will be used to represent categories in eGoods.
The entity system has temporary been divided into a base entity and the concrete one. The base entity AbstractVersionedEntity provides basic properties and functionalities, such as id, version etc, and a generic implementation of equals() method and hashCode() method.
Category entity itself is organized as a tree. It has parent category, and also child categories. For now, category has been stored in only one table, that's not the best solution. As a result, it affects flexibility for our category service implementation. I'll revisit it later.
CategoryRepository is the repository to operate on categories. That interface is a Spring Data JPA's standard solution. Please refer its documents for detail.
I've also add some tests to address how to write test cases with SpringJUnit4ClassRunner. These test cases are not good samples for writing services, but more focus on functionality coverage.

Next step:
1. Write a common tool to consume XML format data and insert it into database. In that case, we can use a more simple way to prepare our testing data. (The root category created in @Before function)
2. During testing, using a different database other than egoods. In that case, running test cases will not pollute database egoods
3. Implement category service.