Settings API: allow conditional levels

This PR enables settings levels to be conditional, in certain cases we may want the level to depend on an external factor. For example, we might assume that only advanced users would want to change a peripheral's settings from their default values when that device is unplugged. This should help with our settings levels matrix when a "one-size-fits-all" solution isn't appropriate for all HTPC setups and scenarios.

Settings level can either be a simple `<level>2</level>` tag or a more complex one (in this case evaluating to "1"):

```
<levels default="2">
    <level value="0">false</level>
    <level value="1">
        <and>
            <condition>true</condition>
            <or>
                <condition>false</condition>
                <condition>true</condition>
            </or>
        </and>
    </level>
</levels>
```

needs xcode project settings (only has Makefile and VS2010 project entries)