Allow the use of private/protected default constructor.

This is a very simple change that allows classes inheriting from ```Model``` to use a private/protected default constructor instead of requiring this constructor to be public.

This is good if you want to force developers to e.g. use a constructor that requires specific default values while still allowing AA to create an instance with reflection.