What character is that HTML entity? The goal is really simple. Receiving a string as input, parse all the HTML entities that correspond to the following characters (including their uppercase variants):

áàãâäéèêëíìîïóòõôöúùûüýÿ


Parsing rules:


Each entity starts with &amp; and ends with ;
The first character after the &amp; will be the modified character (letter case is important!)
The remaining characters refer to the name of the accent to use (acute, grave, circ, tilde and uml). The accent name MUST be in lowercase! *
Any HTML entity that produces a character that isn't on that list, or that is invalid, should be left untouched (E.g.: &amp;amp;, &amp;etilde;, &amp;a;)
Numeric entities should be ignored, since they don't fit in the rules above


This change was introduced as of 18-02-2016. All the existing answers that accept HTML entities with uppercase accent names are valid. Any future answer must follow this rule.

Examples:

&amp;aacute; //á
T&amp;eacute;h&amp;egrave;h //Téhèh
an &amp;amp; //an &amp;amp;


Output:

The output can be in ISO-8859-X (1-15), windows-1252 or UTF-8/16/32.
You can pick one and only one of the valid encodings and use it for any output. You can safely assume that the input will be in ASCII.

Any of the following is a valid output for &amp;aacute;:


á (ISO-8859-1/15 or windows-1252, equivalent to \xE1)
Ã¡ (UTF-8, equivalent to \xC3\xA1 or \u00E1)
aÌ (UTF-8, equivalent to a\xCC\x81 or a\u0301)
Any combination of diacritics, without using HTML entities.


The output has to be visually similar, when rendered/displayed, to the characters on the list.



Remember, all the standard loopholes and built-ins * are disallowed. Since this is code-golf, the shortest answer wins.

* This change was made due to the great disapproval of bonuses and penalities, and at the time of writting, doesn't invalidate any answer
JavaScript (ES6), 141 122 134 bytes
a=&gt;a.replace(/&amp;([aeiouyAEIOUY](acute|uml)|[aeiouAEIOU](grave|circ)|[aoAO]tilde);/g,b=&gt;b[1]+{g:&quot;̀&quot;,a:&quot;́&quot;,c:&quot;̂&quot;,t:&quot;̃&quot;,u:&quot;̈&quot;}[b[2]])

Followed daavko's example using diacritical marks, and I feel like an idiot for not thinking of using it sooner. Actually gets surprisingly short for JavaScript.
EDIT: Neil caught some bad cases of undefined, which are now fixed.