Changed container for storing components from hash to list

Makes it easier to access by index. Components arrive in list in random
order, so they need to be sorted. Added a convenience method to access
component by id.