Fix AR:B.where(belongs_to_assoc: nil) which generated invalid SQL

When referring to a belongs_to association in a query, nil values
would cause the PredicateBuilder to skip over the part that expanded
the association name into the foreign key. The same thing would
happen when the value was an array of AR:B objects or an AR:Relation.

For example:

    Post.where(author: nil)

This should return posts where the author is not set, but instead
it generates an invalid SQL statement using the association name.

    # Invalid SQL generated previousl
    SELECT "posts".* FROM "posts" WHERE "posts"."author" IS NULL

This fix removes the requirement that the association value is an
ActiveRecord::Base object when converting the association name to its
respective foreign key.

    # New valid SQL returning the expected result.
    SELECT "posts".* FROM "posts" WHERE "posts"."author_id" IS NULL

This also allows values that are arrays or AR:Relations to be handled
properly just like they would be if you used author_id as the column.

    Post.where(author: [Author.find(1), Author.find(2)])
    SELECT "posts".* FROM "posts" WHERE "posts"."author_id" IN (1, 2)

    Post.where(author: Author.where(id: [1,2]))
    SELECT "posts".* FROM "posts"  WHERE "posts"."author_id" IN (SELECT
      "authors"."id" FROM "authors"  WHERE "authors"."id" IN (1, 2))