Supports multiline function definition. It pre-lex the entire source code and count brace level to see if additional lines are needed. It counts braces after preprocessing is done, thus it correctly handles tricky #ifdef directive cases such as this one reported in cling. (https://sft.its.cern.ch/jira/si/jira.issueviews:issue-html/ROOT-4812/ROOT-4812.html)
Currently, ReceiveCompleteSourceInput runs in O(n^2) where n is the number of lines within a function. Extension of Lexer class is required to make this more efficient up to O(n). Specifically, we need to teach Lexer to receive variable buffer and ask for additional bytes when it consumed all the buffer.