Major refactor of JMobster

Started a hug refactor which should make the library more object
oriented. The previous implementation relied on processors which
made the structure quite hard to extends. The new structure relies
more on abstract Model and ModelField classes as well as Validator
classes.
Add tests for DefaultGroupManager
Improve ItemProcessor syntax

Improved ItemProcessor syntax. Now it usees ItemHandler class which
only has one method. Before creating ItemProcessor didn't necessarily
create the missing process method and the ItemProcessor class had
too many methods that could be overriden. New syntax makes the code
cleaner and shows what which parameter does.
Add support for multiple annotations per validator

Added support for Validators to represent multiple annotations.

Fixed bug in Backbone SizeValidatorWriter which wrote max value for
min validatorion property. Cleaned code a bit. Added JavaDocs to
few methods.

Added notice about branch's state to readme
Add tests for backbone validator writers

Added tests for backbone validator writers. Changed the way the
DataWriters work. Now there are separate data writers for string
buffers and files.
Clean up project package structure

Cleaned up the project structure. Moved classes to better packages.
Make GroupManager more generic

Make GroupManager more generic by adding generics support. This
required the HasGroups interface to have also the generic parameter.
Changed DefaultGroupManager to GenericGroupManager and added new class
ClassGroupManager which sets the GroupManager generic type to Class.
Change isLast to ItemStatus in ItemProcessor

Changed isLast boolean to ItemStatus object in ItemProcessor to
make the item processor util more powerfull and expandable. ItemStatus
consists of getters that tell if the item given for processing is
the first or last item that is going to be processed.
Change ModelGenerator to pass ItemStatus

Changed ModelGenerator to pass ItemStatus object instead of simple
boolean to ModelProcessors. This will give more option for model
processor implementations when user can get more status info about
the progress of model processing
Refactored field group filtering

Change field group filtering to be a bit simpler for now. For this
created a new class FieldAnnotation which creates our own abstraction
layer for annotations.
Rename FieldScanner to ModelFieldFactory

Renamed FieldScanner and cleaned unnecessary getters
Add missing validators and writers

Added missing validators and correspnding writers. Changed validator
construction to use the default constructor and forcing the user to
implement init method. The main reason for this was to make the default
constructor to init the type automatically and making sure that the
user will create a right kind of init method. The old method that
relied on constructor with parameter made IDE to generate from kind
of constructor. The new abstract init method will be always right type.

Optimized imports in all java files
Add writer for NotNullValidator, add tests, docs
Change version to 0.2-preview-alpha
Add more tests and JavaDocs for several classes

Added tests for AnnotationBag
Added tests for BaseValidatorFactory
Added tests for ValidatorConstructor
Added more JavaDocs
Clean JMobsterFactory with a builder
Add support for changing writer and grouping

Added support for changing writer and validator group settings to
ModelGenerator. The required changes cascade from ModelGenerator
to the lowest levels where grouping and manageing writers for certain
classes are handled.
Fix minor issues found in IDEAs inspection
Add more tests for several classes, cache clearing

Added tests for basic JSR-303 validator wrappers
Added tests for DefaultValidatorSacnner
Added tests for CachedModelProvider
Added tests for CachedModelProvider.
Added ability to clear cache in CachedModelProvider
Move ItemStatus static method to own class

Moved ItemStatus static methods to own ItemStatusHelper class
because those methods are only used in tests.