Added: Weak beat contour comparison

There seems to be some issues with the algorithm described in the workflow. This is a preliminary implementation of that algorithm, but must be changed after consultation with Laura.
Added: (preliminary) Compare different-lengthed fingerprints

Using sequence matcher, find sublist of a list in another list. Will have to be tweaked to follow the workflow's logic. Also, there are special cases that need to be addressed.
Changed: Fingerprint Representation with 0-length Intervals

There is now an additional row between weak and strong beats containing the interval between a strong beat and itself.
I.e., it's a representation of 0-lengthed intervals.
Changed (post-consultation): Representation and Comparators

Made representation of fingerprints include the strong beat and its weak beats directly after the fingerprint. I.e., it's the first strong beat & weak beats after the 2nd/4th measure.

Contour similarity for weak beats now compare weak beats between two strong beats with the same/similar contour (instead of the weak beats between AND after the strong beats).

Weak beat matching for mismatched strong beats now only compares them w.r.t the very first beat, instead of iterating backwards.
Added: Handling for multiple weak beats

Set-ifies weak beat lists and finds intersection for matching. Used to match first weak beat between two strong beats for two fingerprints.

Still have to handle weak-beat contouring.
Changed: Updated visual representation of comparison

Now outputs a data frame with nicely labelled rows.