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.