Feature: fuzzyId

This has been talked about a few times in the past. In the case where we're given a reference object, it would be useful to be able to efficiently get the "id" of the reference without making unneeded DB calls.

eg. 
```PHP
    public function getAuthor($book_ref)
    {
        $book = Account::fuzzyFind($book_ref);

        $author = Author::find_by_book_id($book->id);
        // OR
        $author = $book->author

        return $author;
    }
```

The above example will do what's needed, but it makes two calls to the DB. If the $book_ref is the book's ID, then we don't need to look up the book object:

```PHP
    public function getAuthor($book_ref)
    {
        $id = is_int($book_ref) ? $book_ref : Account::fuzzyFind($book_ref)->id;
        $author = Author::find_by_book_id($id);
        return $author;
    }
```

This PR adds in a convenient method to reduce the amount of repetitive code in an app:

```PHP
    public function getAuthor($book_ref)
    {
        $id = Account::fuzzyId($book_ref);
        $author = Author::find_by_book_id($id);
        return $author;
    }
```

This was my original thinking, however (correct me if I'm wrong) `getKey has` to do a DB call via AR Model's `get_primary_key` method, which defeats the purpose. So to really get anything out of this, we have to make it specific to an integer ID.

I put it in the trait because it depends on fuzzyFind being implemented. We could implement this somewhere else and do an instanceof check, but this still felt like the most logical place to put it. I wouldn't alter the interface because as you say that would create many BC issues.

I could make another trait, but that just seems cumbersome and this method is very closely related to fuzzy find.