Introducing Internal module with low-level API

Exporting lock and unlock via Internal module allows to build different
high-level APIs on top.
Bumping version to 0.4.0.0