Make full use of the propdeps plugin

Sorry for the noise. This is an improved version of #18. It should be functionally equivalent. It allows the optional and provided configurations to be used, rather than the confusing `compile("foo", optional)` syntax.