Plugin requirements

This patch does two things

1. Makes the existing dependency code more reusable
2. Provides a way for plugins to specify their own requirements in php version, idno version, php extension and plugin/plugin version

It doesn't *enforce* any of these requirements, but it makes it obvious when there are problems.

Plugin authors can specify these requirements by specifying a requirements section in their plugin.ini, e.g.

```
php = 5.4.5
extension[] = xml
extension[] = oauth
idno = 0.0.1-dev
plugin[] = Like,0.2
plugin[] = Foo
```