Preserve code before and after `define`.

I've found it rather common for AMD modules to define variables before or after the `define` block to be used inside.

```js
var constantValue = '...';
define(function() {
  // ...
});
```

I've modified the traversal code to preserve any code before or after the module definition.  Further, it's wrapped in a function to avoid clobbering variables on the outside.  I modified the test cases to match.