left/top report nil if not set instead of 0

* changed from previous code that reported 0 in an attempt to
  be compliant with shoes3 and was at fault with that... the first
  element reports 0 for left/top but that's because that's the
  x-y coordinate at that point
* so why does it report nil now and not the x/y? Because that's
  what absolute_left/top are for. And I think it's super confusing
  that you can set a top value of say 50 and then it'd report
  another value when asked about it under circumstances. Because
  top/left are set relative to the start of the slot they are in,
  so the actual real top of an element is the top of its slot plus
  its own top value... it's confusing
* this breaks compatibility but I believe it's a change worth
  making. Need opinions though.
right/bottom init and flow specs

* specs for initing an element with them
* also some specs on how they behave within a flow