layers: DeviceLimits device feature checks and dead code removal
Refactored DeviceLimits to store maps in the layer_data struct in order to reduce map look-ups.
Added new checks and documentation related to Features checking. If specific features are requested at vkCreateDevice() time by the app, then they are checked against the supported features of the physical device. Requesting unsupported features cause validation errors. If the user did not query features and is asking for any unsupported features, then a warning message recommending that they query features is also printed along with the error(s) for unsupported features.