Add module to precompute the sequence of tiles to draw circles

This is a work in progress. I have implemented two steps of my
algorithm so far:

  A) compute the maximum width expected based on the total number
     of authors, adding an error margin to account for circles
     larger than expected

  B) compute distance values up to a threshold for all tiles within
     a sector of circle between the vertical axis x=0 and the
     diagonal axis x=y

I have also implemented the power2() utility function to compute
and cache the squares of numbers. The same values are used frequently
in the computation of distances within the circle sector.
Sort tiles in the reference circle sector by distance and x

Step C of the algorithm is now complete:

  C) collect tiles [distance, x, y] from the circle sector
     and sort them by ascending distance then by ascending x
     (which is also by descending y).
Capitalize start of sentences in comments
Move comment and initialization step of step C of the algorithm together

The goal is to keep related information in close relationship.
Add declaration of arrays for even and odd tile sequences
Reorder x and y in list of declarations
Start adding tiles by symmetry
Simplify, correct and complete computation of even/odd tile sequences

This completes step D of the algorithm:

  D) insert extra tiles by symmetry to create two sequences
     for even and odd circles
Add comment about length of even and odd sequences

This remark is step E of the algorithm:

  E) the length of these sequences is the maximum number of
     tiles that can now be positioned with each drawing method
Add utility function max()
Replace distance in each tile with maximum width of the shape so far

This completes step F of the algorithm:

  F) compute at each step the maximum dimension of
     the circular shape so far
Rename distance() to getDistance()

I also renamed distance4() to getDistance4().

The name distance was confusing with variables having the same name.
Remove unused variable distance from forEach callback
Exclude tiles beyond maximum distance

This completes and fixes step A of the algorithm:

  A) (...) Exclude tiles at a distance greater than the maximum distance.
No longer multiply computed distance by 4

The factor 4 is used in the underlying algorithm to compare
distance values with a precomputed integer threshold value:

  4r²+4r+1

At this step in the implementation, the distance values are only
used for sorting. The factor is no longer needed.
Do not publish intermediate values anymore

Now that the sequences are available, these values are no longer needed.
Reduce error margin to 1 tile instead of 2

This margin stills allows to draw 36000+ tiles which is more than enough.
Add specification for layout of chat for working group categories
Wrap table layouts for working groups in a parent table layout
Select fixed layout based on selected grouping category

This completes step G of the algorithm:

  G) To render a visualization for a selection of authors
     grouped by current criteria (categories), start with
     a group layout (fixed for a fixed number of categories).