Updated the AbstractModel.read() method to be more flexible

- Models are now searchable by fields other than ID as long as it
  uniquely identifies that model
- Uses LIMIT 1 so if there are more than 1 then it will choose
  randomly
Make a 404 not an error that needs to be logged
v0.0.21