Require behavior list of models on Repo persistence functions.

Repo create/update/destroy now require a list of behaviors to run validation callbacks
against before proceeding via an 'as:' option. Multiple behaviors can be passed, as well as
an empty list to exclude any validation callbacks. Requiring a list of behaviors allows separation
between persistence and behavior, while explicitly listing the callbacks to be performed when
persisting records.

Examples

  iex> Repo.create(User, [age: 12], as: User)
  {:ok, User.Record[age: 12...]}

  iex> Repo.create(User, User.Recod.new(age: 18), as: [User, Employee])
  {:ok, User.Record[age: 18...]}

  iex> Repo.create(User, [age: 0], as: User)
  {:error, User.Record[age: 0..], ["age must be between 1 and 150"]}