class BinData::BaseArgExtractor

separate them into [value, parameters, parent].
ArgExtractors take the arguments passed to BinData::Base.new and

def self.extract(the_class, the_args)

def self.extract(the_class, the_args)
  args = the_args.dup
  value = parameters = parent = nil
  if args.length > 1 and args.last.is_a? BinData::Base
    parent = args.pop
  end
  if args.length > 0 and args.last.is_a? Hash
    parameters = args.pop
  end
  if args.length > 0
    value = args.pop
  end
  parameters ||= @@empty_hash
  return [value, parameters, parent]
end