Make an ast for compile_update as needed

`my_table.compile_update(whatever)` alone crashes because the ast is nil, whereas both `my_table.where(something).compile_update(whatever)` and `my_table.select_manager.compile_update(whatever)` have their way.

This lets the problematic case behave like the latter.

This might apply to `compile_insert` and `compile_delete` as well.