Personalization

@Berdir asked specifically to review this branch, please leave the merging to him.
Why this change? If we call this without a uid, we should check that first and return initially (note that loading entities was changed from returning FALSE to returning NULL, but not sure if we should do that here)