Add More General Support for Cascading

Oliver,

Here is more general cascading support. It essentially adds id and element name cascading.

Here's my crazy test case:

```<html>
	<head>
		<style>
			div {
				line-height: 150%;
			}
			
			.foo .bar {
				font-size: 25pt;
			}
			
			.foo .bar .bing {
				color: green;
			}
			
			.foo .bing {
				font-weight: bold;
			}
			
			.bar .bing {
				text-decoration: underline;
			}
			
			.zing {
				color: orange;
			}
			
			.meow {
				font-weight: normal;
			}
			
			.bar .zing {
				font-style: italic;
			}
			
			#blargh .zing {
				text-decoration: line-through;
			}
			
			#fizz #blargh {
				color: purple;
			}
			
			div div span .bling {
				color: orange;
			}
			
			div #moo {
				color: #777;
			}
			
			span .bling {
				text-decoration: underline;
			}
			
			/* intentionally inconsistent spacing to test selector cleanup */
			#fizz  .bling  {
				font-style: italic;
				line-height: 175%;
			}
			</style>
	</head>
	<body>
		<div id="fizz" class="foo">
			<div>
				<div class="bar">
					<div class="bing">
						me
						<span id="blargh"> buzz <span class="zing  meow ">owzers</span></span>
					</div>
					<span style="color:red;">Me<span class="bing">ow</span></span>
					<span><p class="bling">this is a test of by tag name styles targeted by class on an ancestor.</p></span>
					<p id="moo">i'm gray text</p>
				</div>
			</div>
		</div>
	</body>
</html>
```

which renders like so in the simulator:

![screen shot 2013-08-16 at 11 18 19 am](https://f.cloud.github.com/assets/16900/976185/24df2be0-0687-11e3-8203-948a984e68df.png)

For comparison, here's Safari rendering the same markup and styles at a similar width:

![screen shot 2013-08-16 at 11 19 49 am](https://f.cloud.github.com/assets/16900/976191/59570fdc-0687-11e3-9a76-17013c5edbca.png)