Add template loaders

Continuation of gh-377.

From @MaratFM:

> I hit the same issue as #370 when I tried to use swig in browser. Precompiling templates is not useful in some cases and does not work with latest code. That is why I tryed to fix it and and add some flexibility.

> Loaders provides interface for extending swig for using different template sources. By default FileSystemLoader will be used and it acts as current swig implementation. As an example I added MemoryLoader which might be used in browser. It loads templates from predefined hash object.

> I know that my pull request needs to be updated with more documentation and tests, but I want to know you opinion about it before.