Logic for updateUniques fixed

Hi Igor

I'd really appreciate if you could look at this for me. The logic in updateUniques seems a bit flawed. On the one hand the function allows the programmer to pass in $rules, but the moment you do that, updateUniques becomes nothing more than a save function and buildUniqueExclusionRules never gets called. 

This PR makes updateUniques work in all cases.

I also removed some of that Reflection stuff you used and shortened it a bit. 

I would really appreciate it if you could push this through. I did test it manually and it worked fine.  I'm helping with the cleanup of Confide at https://github.com/Zizaco/confide/issues/124 and I need buildUniqueExclusionRules to be a bit more flexible. 

Thank you