Cleanup

Main changes:

1. Cleanup and commenting: most of the code style should be consistent now. Most of the code should also be accompanied by clear and descriptive comments. Several TODOs have been added at parts of the code which still need work (for example, finding max elements across a dimension etc)
2. `geo_mean` and `qol` have been cleaned up and commented, with proper checks
3. Most of the promotions mess is now handled in a separate file- promotions.jl
4. Several DCP checks. sign checks etc. that were previously not present have been added.
5. `vecnorm` has been added, indexing now allows using `:`
6. `hcat`, `vertcat` now allow concatenation with constants, other bug fixes in implementation
7. `.+` and `.-` are now allowed and expected if sizes don't match. `+` and `-` throw a warning if sizes don't match. `.<=` etc are now allowed.