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;
    }
```

The `getKey()` method does call `get_key_name()`, but that method simply grabs a public property from the model's table (a statically cached instance), so it shouldn't do any SQL I/O unless the model's never been called (but if you're doing a fuzzyFind, then the model's table has already been loaded).

Its just strange, because you can type check against the `FuzzyFindInterface` to check if that method exists (or ensure it does in the class's signature), but now you wouldn't be able to with this method, which is an awkward use of traits since they're essentially compile-time copy and paste.