UTF-8 Marshaling

Since .NET doesn't support UTF-8 string marshaling, which SDL2 uses, I wrote a custom UTF-8 marshaler and applied it to all string arguments and return values. Applying it to the return values also made it possible to remove the INTERNAL_* wrappers around a lot of the functions. I haven't tested all the functions, but I've created a window with a unicode title string using characters from all kinds of languages, and it worked perfectly.

Also, added a simple .gitignore file

Let me know if there are any problems or if I missed something