Draft implementation of properly setting UIDs in a provider specific fashion

To solve the problem referenced in #165, I've added a protected method to AbstractProvider.

Since our providers already have a $uidKey property that is settable by any inheriting provider, this is a really easy way to abstract the maintenance load of knowing exactly what uidkey each provider users to the maintainer of that specific provider.
The build is failing because of the space before the closing parenthesis here. Please get rid of that space.