title: Explit conformance to Codable removes memberwise initializer generation on structs
body: <p>Given:</p>
  
  <pre><code>struct Foo {
      let bar: Bar
  }
  </code></pre>
  
  <p>I get a convenience initializer to use:</p>
  
  <p><code>let foo = Foo(bar: Bar())</code></p>
  
  <p>But if <code>Bar</code> isn't itself <code>Codable</code>, or for some other reason I need to explicitly implement <code>Codable</code> on <code>Foo</code> then the convenience memberwise initializer is no longer present:</p>
  
  <pre><code>struct Foo: Codable {
  
      init(from decoder: Decoder) throws {
  
      }
  
      func encode(to encoder: Encoder) throws {
  
      }
  
      let bar: Bar
  }
  </code></pre>
  
  <p>and i get:</p>
  
  <p><code>let foo = Foo(bar: Bar())</code></p>
  
  <blockquote>
    <p>Incorrect argument label in call (have 'bar:', expected 'from:')</p>
  </blockquote>
  
  <hr>
  
  <p>Is it possible to have the best of both worlds here?</p>