Inline template function instances

Functions which are marked as ```DECL_WEAK``` are not inlined by gcc as
they could be replaced with a completely different implementation
at link time.

We know that our template instances will always be identical so
they should be inlined. The solution is to mark the template
function instance as ```DECL_DECLARED_INLINE_P``` as it's also done in
C++.

This also applies to ```DECL_ONE_ONLY``` functions as ```make_decl_one_only```
also sets ```DECL_WEAK```.

Related discussion on gcc-list:
http://article.gmane.org/gmane.comp.gcc.devel/130242