Deferred scripts that have nested taglibs in them don't render

This patch fixes an issue in the current `<asset:script>` tag that causes it to emits empty `<script></script>` tags if the body of the deferred script has any groovy expressions or nested tag lib calls in it.

This works:

    <asset:script>console.log("hello world");</asset:script>
    ...
    <asset:deferredScripts/>

This doesn't:
    
    <asset:script><g:if test="true">console.log("hello world");</g:if></asset:script>
    ...
    <asset:deferredScripts/>


This is because for the simple case, grails returns an object type that has a `toString` method on it that does what you'd expect it to.

For the more complex, nested ones, it returns some sort of closure that needs to be evaluated to get the string value.

The attached patch fixes this issue (and has supporting tests) and works for both cases.