AMD updates

This minor fix uses AMD's local async `require` instead of the inline `define`.  The timeout has been preserved for AMD environments that do not support the async require's error callback.  

Also, the sniff for an AMD environment was updated to use `define && define.amd`.