Custom CSV Parsing

#### Issues
1. The `str_getcsv` causes an infinite loops since it never returns false.
2. If using `str_getcsv` it reads the whole string and not by new line we would only get an 1D array of all values the values read.

### Proposal

The current method will:
1. Split by newline, and drop empty lines
2. Guess the delimiter if none set
3. Parse each line as row, cols 
4. Expand the rows to have the same amount of cols if they differ (sometimes csv files are wrongly edited manually)