stream = {message}
message = headerMessage | dataMessage
headerMessage = MAGIC_HEADER, vlen, NcStreamProto.Header
dataMessage = MAGIC_DATA, vlen, NcStreamProto.Data, vlen, data

vlen is the length of the message that follows it

data is sequence of primitive types described by NcStreamProto.Data. Big-endian for now.
  for type = structure, layout is ArrayBB.

----------------------------------------------------------------
Remote URLS

THREDDS ServiceType = NetcdfStream
http://localhost:8080/thredds/ncstream/stream/temperature.nc

client may use protocol ncstream to disambiguate
ncstream://localhost:8080/thredds/ncstream/stream/temperature.nc

HEADER: http://localhost:8080/thredds/ncstream/stream/temperature.nc
DATA:   http://localhost:8080/thredds/ncstream/stream/temperature.nc?Temperature(0:0,0:127,0:163)

using Section spec: F90 array syntax (0:23) means from 0 to 23 inclusive.
variable name will need to be UTF8-escape encoded.

URL = urlpath | urlpath?query

   query = sectionSpec [';' sectionSpec]

   sectionSpec := selector | selector '.' selector
   selector := varName ['(' dims ')']
   varName := ESCAPED_STRING
   ESCAPED_STRING : must escape characters = '.', '(', ','

   dims := dim | dim, dims
   dim := ':' | slice | start ':' end | start ':' end ':' stride
   slice := INTEGER
   start := INTEGER
   stride := INTEGER
   end := INTEGER
