hasMany setter uses bulk create and destroy to create and remove associations

In response to #104

Since we now have bulk create and updates available, there is no reason to do individual queries for each object. Instead of 
```sql
Executing: INSERT INTO `x` (`a_id`,`b_id`) VALUES (1,1);
Executing: INSERT INTO `x` (`a_id`,`b_id`) VALUES (2,1);
```
We will now do
```sql
Executing: INSERT INTO `x` (`a_id`,`b_id`) VALUES (1,1), (2,1);
```

And similarly for deletions:
```sql
Executing: DELETE FROM `x` WHERE `a_id`=1 AND `b_id`=1 LIMIT 1;
Executing: DELETE FROM `x` WHERE `a_id`=1 AND `b_id`=2 LIMIT 1;
```
Becomes
```sql
Executing: DELETE FROM `x` WHERE `a_id`=1 AND `b_id` IN (1,2);
```