Fix off-by-one error that prevented buffers from being mapped in full.

The last byte was forbidden to be mapped. This commit fixes this.
Add a new `NoAccess` to available access permissions for buffer objects.

NoAccess means the buffer cannot be mapped at all after creation.
Make sure Shader and Pipeline are instances of Eq and Ord.