Add a meta dictionary to models.

Addresses #2189. 
This issue is milestoned "future" but I need it now.
It has been discussed on the mailing list already and there was an agreement to add it.

:+1: Avoiding setting `self.meta` if the `meta` kwarg is `None` avoids instantiating the `OrderedDict` until and unless it's actually used directly so, I like this.