Refactored to allow a dependency's own properties to determine order.
- Refactored to use strongly typed metadata.
- Updated readme.