Made some changes to the Statements object:
- Statements objects can now initiated with a list of Statement objects
- Can't insert/append a Statement to a Statements object if another Statement
  object already exists with the same identifier.
- Assigning to an already exitsing identifer using the dict
  api (i.e. stmts["blha"] = Statement()) replaces the previous statement but
  preserves the order.

Also now the identifiers for Attribute, Group & Object can't be any of the
reserved idetitifer.