cmake doesnt seem to like macros with a really huge argument list

source_group_by_path gets a argument list of about 300 files (30kb as string) because of unknown reasons cmake doesn't like this and is really slow the first time the argument list (ARGV/ARGN) is accessed. 

Making source_group_by_path a function removed this problem. Also it isn't neccessary to double escape the backslash and there is a ARGN argument that holds the list of all unnamed arguments. No more removing arguments from ARGV