Add some comments about X_PER_F and ch_per_x

The X_PER_F macro and the ch_per_x variable are only used with FPGA X
engines.  They are not used when receiving GPU X engine data.
Use cb->nchan_per_x instead of recomputing it

This simplifies an expression by using cb->nchan_per_x instead of
effectively recomputing it.  This localizes the computation of
nchan_per_x to one place so that it can be more easily changed if
needed.
Make cn_conf accept an empty F engine server list

Python scripts that use the corr package might not need to talk to F
engines via KATCP (e.g. cn_rx.py).  This is especially true for GPU
X engines.  This change allows the server list in the config file to be
empty without any complaining by cn_conf.py.
Avoid static array size for xids in collate_packet

collate_packet() has an array of integers used for counting packets from
each X engine.  This array was statically sized for a given correlator
configuration of (up to) 16 X engines.  This is obviously a problem for
larger correlators with more X engines, so this array is now dynamically
sized at runtime for the actual number of X engines as computed from
parameters in the conf file.
Store autocorrelations in redis

By default, cn_rx.py will store autocorrelations in redis using
connection info from the conf file.  If you want to prevent storing the
autos in redis, pass "--no-redis" on the cn_rx.py command line *after*
the conf file.

For example:

$ cn_rx.py gpu256.conf --no-redis
Add some profiling/benchmarking code

With a 256 input 1024 channel correlator the code now takes over 20
seconds to write out an integration.  This is a big problem for 10
second integrations!  To find out where the code is taking so long,
various portions of the code have been surrounded by clock_gettime calls
to measure the time spent in those areas.

The python code now has this performance code always enabled, but the C
code must be compiled with "PACKET_STATS" defined to have this code
included.
Disable unused/unknown "sdisp_callback"

It turns out that the sdisp_callback is causing the dump to take too
long.  The sdisp_callback re-formats and re-transmits the data for
reasons that are no longer known.  There are no known receivers of the
data being sent by sdisp_callback.  For these reasons, sdisp_callback
have been disabled.