title: Support for object level Tagging in boto3 upload_file method
body: <p>I want to add tags to the files as I upload them to S3. Boto3 supports specifying tags with put_object method, however considering expected file size, I am using upload_file function which handles multipart uploads. But this function rejects 'Tagging' as keyword argument. </p>
  
  <pre class="lang-py prettyprint-override"><code>import boto3
  client = boto3.client('s3', region_name='us-west-2')
  client.upload_file('test.mp4', 'bucket_name', 'test.mp4',
                     ExtraArgs={'Tagging': 'type=test'})
  
  ValueError: Invalid extra_args key 'Tagging', must be one of: ACL, CacheControl, ContentDisposition, ContentEncoding, ContentLanguage, ContentType, Expires, GrantFullControl, GrantRead, GrantReadACP, GrantWriteACP, Metadata, RequestPayer, ServerSideEncryption, StorageClass, SSECustomerAlgorithm, SSECustomerKey, SSECustomerKeyMD5, SSEKMSKeyId, WebsiteRedirectLocation
  
  </code></pre>
  
  <p>I found a way to make this work by using S3 transfer manager directly and modifying allowed keyword list. </p>
  
  <pre class="lang-py prettyprint-override"><code>from s3transfer import S3Transfer
  import boto3
  
  client = boto3.client('s3', region_name='us-west-2')
  transfer = S3Transfer(client)
  transfer.ALLOWED_UPLOAD_ARGS.append('Tagging')
  transfer.upload_file('test.mp4', 'bucket_name', 'test.mp4',
                       extra_args={'Tagging': 'type=test'})
  </code></pre>
  
  <p>Even though this works, I don't think this is the best way. It might create other side effects. Currently I am not able to find correct way to achieve this. Any advice would be great. Thanks.</p>