Correctly send the string given to lock! and reload(:lock) to the lock scope - fixes #13788

As per the documentation at lock!, if the :lock option is a string it should use the given SQL to generate the lock statement.

This change fixes this issue and also includes two new tests to make sure this behaviour is maintained.