[#303] split shape.js into several files for better source code readability

as a bonus gift, also converted TAB to space in the new created files :P