Made some fixes so we can use string as ID aslo

Hello,

I'm using RavenDB in my project. So I dont want to have my ID's as a int.

Changed the object so it's a string. So now it's possible to use most types of ID's (guid,string,long,int etc)

I tried not to make any breaking changes. But the userdata and metadata objects is changed to string UserId. Rest of the methods have still the method taking in but doing .ToString().  
  
Another problem with using int is IF a really large system would use this. You would get problems with int overflow.