Removed valid requirements, added valid as attribute to Absolutes, added features to handle spreadsheets that do not have 4 sets"
This commit removes the valid requirements for readings, therefore no readings are rejected.
It also defines the "valid" attribute for each absolute with somewhat backwards logic (not bool=true) because we want the valid attribute to appear as "true" if there is nothing in the J column to indicate a rejected absolute. It should be noted that the Absolute class currently only accepts the "valid" attribute as type Boolean (true or false) which is also why I converted from type None to Boolean. This works as expected with a test summary spreadsheet.
I also edited the residual_test.py and adjusted_test.py to assert different array lengths as a result of no readings being rejected.
I also added a try statement to Angle.py in case the values returned from the spreadsheet are None.
I added the parse_relative_time function into the SpreadsheetSummaryFactory from the SpreadsheetAbsolutesFactory to avoid circular referencing but this could also be it's own script. I also added formatting directly into this function so that the formatting does not fail outside the function when the values returned from spreadsheets are None.
I made a short convert_baseline function in case the values returned from the spreadsheet are None.
Finally, I added a sets_len variables into _parse_readings so that there is a dynamic range in the loop. This variable is defined by list comprehension that returns the number of sets so that we do not always assume four sets.