Adding a test case for Region Repository.
Adding some CDI magic. 

Adding some CDI magic. 
1) Creating a producer for Logger instance which makes it easy to create
Logger instance in each class. 
2) Instead of using @PersistenceContext everywhere, an alias is created
which can be used injected.
Adding an EJB to save new Regions. EJB is preferred instead of CDI bean
to do this as it would provide automatic transaction management.
Modifying Region entity to generate the regionId automatically. (using
persistence provider).
Now let's add the producer for FacesContext. We will use FacesContext
for displaying success and failure message to the user.
Let's add a controller to handle the region creation and navigation.
This controller uses regionService, facesContext and implicit JSF
navigation.
Let's add a JSF page createRegion.xhtml for creating or a region. Also
update the regions.xhtml to add a navigation link to createRegion.xhtml.
and add <h:message/> tag to display success message on regions.xhtml
page.
Now let's see some more CDI fun. We can raise and consume events via 
Qualifier. Let's create a Created qualifier. Modify the RegionService to
inject an event qualified by Created for Region class. 

Let's also modify our RegionListProducer to make it session scoped which
would show the usefulness of raising and observing event in our little 
example.
Adding some validations to our Region entity. Region name is made unique
and a unique constraint on the Regions table (and optionally on the
Region.java entity in case one wants to create tables from entities)
Updating the default.xhtml template to show error messages in red.