Allow custom constraints for load()

I'd rather have a fluent interface, the possibility to set constraints and only one eager load per call.

Alternatively, we can use the same somewhat verbose array syntax that `Model::with()` supports.