JLFP: Task-aware wss overhead charges (pythonic)

The JLFP overhead model currently charges the same max-wss CPMD
to all tasks of a task set, even if each task has a different
wss. Instead, each task should be charged the max-wss CPMD, except
for the task with the largest wss. This task should be charged
a CPMD for the second-greatest wss.
Merge pull request #4 from GElliott/prop/task-aware-wss-pythonic

JLFP: Task-aware wss overhead charges (pythonic)
Skip unit tests that depend on LP solver if none is available
bugfix: clarify "locking_priority" [incompatible API change]

WARNING: This patch breaks API compatibility and requires changes by
users of the SchedCAT library's blocking analysis code.

The recent merge of the LP-based spin lock analysis introduced a confusion
of the field 'locking_priority' in the blocking analysis API. This patch
restores the old behavior, where "locking priority" really served to
to specify possible preemptions.

Further, the spin lock analysis changes "abused" locking_priority field
to indicate request priority in priority-ordered spin locks. This is
reverted to instead use the per-request ResourceRequirement.priority
attribute.

To avoid similar confusion in the future, the field and corresponding
APIs have been renamed to use the term "preemption_level".
Resolve test failure with expectation update

Patch 3b1068d75044f2a16eb0bf619bdb1e498fb5dc32 made the CPMD accounting
(slightly) less pessimistic (for single-task task sets). This changes
the expected outcome in the end-to-end test. This patch updates the
reference values accordingly.
Rename spin lock analysis API, part 1

Python part still missing...
completed renaming of LP-based analysis of spinlocks
added simple testcases for LP-based spinlock analysis
added test for dummy bounds
add missing @unittest.skipIf annotations

Don't fail LP analysis tests if no LP solver is available.
C++: add relative deadline to TaskInfo
C++: add get_max_lower_prio_jobs() to TaskInfo

Computes the maximum number of lower-priority jobs that exist while another job
is pending.
C++: add Generalized FMLP+ blocking bounds

Conflicts:
	native/Makefile
	native/include/lp_analysis.h
Expose Generalized FMLP+ blocking analysis in Python
C++: Minor fixes in BaruahGedf

Clean up some old editing mistakes…
C++: fix rounding of GMP fractional_t fractions

The code computed the numerator assuming the denominator isn't
changed, not the rounded value of the fraction, but the value wasn't used
this way. As a result, the values returned by this code way outrageously large.
C++: Add support for self-suspensions to C++ sched test task model

Also adds precondition checks to all current schedulability tests to make sure we don't accidentally overlook self-suspensions.
C++: remove unused set_XXX() methods from Task model
C++: expose DBF as dbf() in task model

The old API avoided relying on return value optimization. With a
decent compiler, this is no longer needed or useful. Alas, rewriting
the entire API is too much for now.

Further, fix a corner-case issue in the DBF computation if unsigned
long is used. This completes the fix given in
e17645921697351bd968f034a85299c02332ad16, which overlooked the
unsigned long version.
Implement LA test