Better requested space

From commit notes:

    [refactor] Components now return desired width/height directly, rather than
    the minimum of desired width/height and offered width/height. Table now allocates
    the minimum of desired/offered height appropriately.

    This results in simpler component layout code, and lays the groundwork for simplifying the
    requestedSpace interface from 4 fields to 2
---
    [refactor] Reimplement`Component._isFixedWidth` (& height) using flags not trickery

    Close #484 
Closes #484 
notice it's a funciton here too... its a function that in this case returns a boolean. i think i did it this way so you can overwrite the function with custom logic and calling the function will compute a new result as necessary so it avoids some synchronization headache