Improvements to AbstractProvider

I merged in a recent PR that gives providers a better way to handle various UIDs. Take a look at the README, which has been updated to explain providers in greater detail.