Add code guidelines

will probably ignite some heated debates but whatever. guidelines are needed and whatever we agree on should live in this doc/CODING_GUIDELINES.md file.