add suport for block replacement for custom block types

Be able to define custom block replacement logic for custom block types (types other than 'css' and 'js').

We can have a "less" block type and define a flow for it and configure the "less" task properly. The resulting css file is generated and placed in the correct dest directory.

But blocks with type other that "css" or "js" won't be correctly "summarized" in the html. I get "undefined" instead of the proper "link" tag referencing the output file.

Main motivation in my case is to be able to define a block for .less files, call less processor in a custom flow (already possible) and have the resulting css file included in a single 'link' tag. This PR addresses the last part.

With this PR, you can have:

This block in your html
```html
<!-- build:less styles/main.css -->
<link rel="stylesheet/less" href="styles/main.less">
<link rel="stylesheet/less" href="styles/home.less">
...
<!-- endbuild -->
```

this configuration:
```js
    useminPrepare: {
      html: 'index.html',
      options: {
        dest: 'dist',
        flow: { 
        	steps: { 
        		'js': ['concat', 'uglifyjs'], 
        		'css': ['concat', 'cssmin'],
        		'less': [{
        			name: 'less',
        			createConfig: lessCreateConfig
        		}]
        	},
        	post: {}
        }
      }
    },

    usemin: {
      html: ['dist/index.html'],
      options: {
        blockReplacements: {
        	less: function (block) {
        		return '<link rel="stylesheet" href="' + block.dest + '" />';
        	}
        }
      }
    }
```

and have this result:
```html
<link rel="stylesheet" href="styles/main.css">
```

If this works out for you, I can help updating the docs too.

What do you think?