Nested component tags of same type throws an error

If component tags of the same type are immediately nested and have inner content, the Scanner generates a compiled template which throws an error when it is eval'd. Simplest case is two immediately nested tags, but the same happens with more than 2. 

The problem is in the [scanner](https://github.com/bitovi/canjs/blob/master/view/scanner.js#L394) where we do custom tag hookups. Normally, the tag in the top of the hookup stack (`top(specialStates.tagHookups)`) is different than the current `tagName` so we hit the else condition which will generate the code to close out the hookup, but in the case where we have two tags the same, `tagName` is the same and we try to hookup the tag again.

For this template:
```html
<my-tag><my-tag>In</my-tag></my-tag>
```

The Scanner generates:
```js
this.fn = (function (scope, options) {
    var ___v1ew = [];
    ___v1ew.push(
        "<my-tag", can.view.Scanner.hookupTag({
            tagName: 'my-tag',
            scope: scope,
            options: options,
            subtemplate: function (scope, options) {
                var ___v1ew = [];
                ___v1ew.push(
                    "<my-tag", can.view.Scanner.hookupTag({
                        tagName: 'my-tag',
                        scope: scope,
                        options: options,
                        subtemplate: function (scope, options) {
                            var ___v1ew = [];
                            ___v1ew.push(
                                "In");
                            return ___v1ew.join('')
                        }
                    }));
                   //we should be closing out the hookup here instead of generating code for another one
                    ___v1ew.push(
                        "></my-tag", can.view.Scanner.hookupTag({
                            tagName: 'my-tag',
                            scope: scope,
                            options: options
                        }));
                    ___v1ew.push(
                        "></my-tag>\n\t");;
                    return ___v1ew.join('')
                });
```

The first two `can.view.Scanner.hookupTag` blocks are fine, the third one is wrong. Instead this code should look like this:

```js
this.fn = (function (scope, options) {
    var ___v1ew = [];
    ___v1ew.push(
        "<my-tag", can.view.Scanner.hookupTag({
            tagName: 'my-tag',
            scope: scope,
            options: options,
            subtemplate: function (scope, options) {
                var ___v1ew = [];
                ___v1ew.push(
                    "<my-tag", can.view.Scanner.hookupTag({
                        tagName: 'my-tag',
                        scope: scope,
                        options: options,
                        subtemplate: function (scope, options) {
                            var ___v1ew = [];
                            ___v1ew.push(
                                "In");
                            return ___v1ew.join('')
                        }
                    }));
                    //this is what should be generated
                    ___v1ew.push(
                    "></demo>");
                return ___v1ew.join('')
            }
        }));
    ___v1ew.push(
        "></demo>\n\t");;
    return ___v1ew.join('')
});
```