[JENKINS-23842] <l:icon> tag

A new `<l:icon>` tag + a "shim" plugin (to allow plugins use the tag but still maintain compatibility with older versions of Jenkins).

Note these changes do not (should not) have any visual effect.  It's foundation for future work with icons (moving them to be CSS based etc).

Once this tag is in place we'll have a lot more control over icons and how they are rendered e.g. allowing us to introduce CSS based icons more easily etc.  See the dev list for more details: https://groups.google.com/forum/?hl=en#!topic/jenkinsci-dev/GOiQdvctBB0

Here's a branch of the Credentials plugin using the shim: https://github.com/jenkinsci/credentials-plugin/compare/icon-tag-shim-test.  A build of that version of the credentials plugin also ran fine on an older version of Jenkins (i.e. the shim cut in and rendered the icon).

At present, the shim plugin is in Jenkins core (ui-ext/icon/shim-plugin):

1. Should it stay there, or must all plugins be in a repo of their own?  
2. If it stays there, how should it be versioned i.e. in line with Jenkins core or independently?
@tfennelly I am also working on some form tags (dropdownList, entry, heteroList and radioBlock), see PR #1326. I also have unpublished work building on this PR that factors out the rendering of the help icons _or an empty table cell if no help exists_ to a new `helpLink`  tag.

In entry.jelly, it would replace the whole surrounding `if` block with `<f:helpLink url="${attrs.help}" featureName="${title}" />`. 
This means that if my work is merged first, the above mentioned four jelly files would not have to be changed at all in order to use `l:icon` because this would be done in `f:helpLink`.

I will update PR #1326 with this WIP today (hope so) so that our work will be mergable more easily.